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());Trait Implementations§
Source§impl<'de> Deserialize<'de> for BenchSpec
impl<'de> Deserialize<'de> for BenchSpec
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
Source§impl From<BenchSpec> for BenchSpecFfi
impl From<BenchSpec> for BenchSpecFfi
Source§impl From<BenchSpec> for BenchSpecTemplate
impl From<BenchSpec> for BenchSpecTemplate
Source§impl From<BenchSpecFfi> for BenchSpec
impl From<BenchSpecFfi> for BenchSpec
Source§fn from(spec: BenchSpecFfi) -> Self
fn from(spec: BenchSpecFfi) -> Self
Converts to this type from the input type.
Source§impl From<BenchSpecTemplate> for BenchSpec
impl From<BenchSpecTemplate> for BenchSpec
Source§fn from(spec: BenchSpecTemplate) -> Self
fn from(spec: BenchSpecTemplate) -> Self
Converts to this type from the input type.
Auto Trait Implementations§
impl Freeze for BenchSpec
impl RefUnwindSafe for BenchSpec
impl Send for BenchSpec
impl Sync for BenchSpec
impl Unpin for BenchSpec
impl UnsafeUnpin for BenchSpec
impl UnwindSafe for BenchSpec
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more