criterion_cpu_time/
lib.rs1use 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}