criterion_cpu_time/
lib.rs

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