pub struct BenchSpec {
pub name: String,
pub iterations: u32,
pub warmup: u32,
}Expand description
Benchmark specification defining what and how to benchmark.
Contains the benchmark name, number of measurement iterations, and warmup iterations to perform before measuring.
§Example
use mobench_sdk::timing::BenchSpec;
// Create a spec for 100 iterations with 10 warmup runs
let spec = BenchSpec::new("sorting_benchmark", 100, 10)?;
assert_eq!(spec.name, "sorting_benchmark");
assert_eq!(spec.iterations, 100);
assert_eq!(spec.warmup, 10);§Serialization
BenchSpec implements Serialize and Deserialize for JSON persistence:
use mobench_sdk::timing::BenchSpec;
let spec = BenchSpec {
name: "my_bench".to_string(),
iterations: 50,
warmup: 5,
};
let json = serde_json::to_string(&spec)?;
let restored: BenchSpec = serde_json::from_str(&json)?;
assert_eq!(spec.name, restored.name);Fields§
§name: StringName of the benchmark, typically the fully-qualified function name.
Examples: "my_crate::fibonacci", "sorting_benchmark"
iterations: u32Number of iterations to measure.
Each iteration produces one BenchSample. Must be greater than zero.
warmup: u32Number of warmup iterations before measurement.
Warmup iterations are not recorded. They allow CPU caches to warm and any JIT compilation to complete. Can be zero.
Implementations§
Source§impl BenchSpec
impl BenchSpec
Sourcepub fn new(
name: impl Into<String>,
iterations: u32,
warmup: u32,
) -> Result<Self, TimingError>
pub fn new( name: impl Into<String>, iterations: u32, warmup: u32, ) -> Result<Self, TimingError>
Creates a new benchmark specification.
§Arguments
name- Name identifier for the benchmarkiterations- Number of measured iterations (must be > 0)warmup- Number of warmup iterations (can be 0)
§Errors
Returns TimingError::NoIterations if iterations is zero.
§Example
use mobench_sdk::timing::BenchSpec;
let spec = BenchSpec::new("test", 100, 10)?;
assert_eq!(spec.iterations, 100);
// Zero iterations is an error
let err = BenchSpec::new("test", 0, 10);
assert!(err.is_err());Sourcepub fn validate(&self) -> Result<(), TimingError>
pub fn validate(&self) -> Result<(), TimingError>
Validate the iteration counts on a specification built with public fields.