1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
use criterion::measurement::{Measurement, ValueFormatter}; use std::time::Duration; mod formatter; mod time; use formatter::DurationFormatter; pub enum PosixTime { UserTime, UserAndSystemTime, } impl Measurement for PosixTime { type Intermediate = Duration; type Value = Duration; fn start(&self) -> Self::Intermediate { self.get_time() } fn end(&self, i: Self::Intermediate) -> Self::Value { self.get_time() - i } fn add(&self, v1: &Self::Value, v2: &Self::Value) -> Self::Value { *v1 + *v2 } fn zero(&self) -> Self::Value { Duration::from_secs(0) } fn to_f64(&self, value: &Self::Value) -> f64 { value.as_nanos() as f64 } fn formatter(&self) -> &dyn ValueFormatter { &DurationFormatter } }