icentral_stats/
simple_stats.rs1crate::ix!();
2
3#[derive(Debug)]
6pub struct SimpleStats {
7 pub mean: Duration,
8 pub stddev: Duration,
9 pub median: Duration,
10 pub min: Duration,
11 pub max: Duration,
12}
13
14impl From<&mut Vec<Duration>> for SimpleStats {
15
16 fn from(x: &mut Vec<Duration>) -> Self {
17
18 x.sort();
20
21 let n = x.len();
22
23 let min = x[0];
24 let max = *x.iter().last().unwrap();
25
26 let sum: Duration = x.iter().sum();
27
28 let mean = sum / n as u32;
29 let median = x[n / 2];
30
31 let mut sum_2: f64 = 0.0;
32
33 for i in 0..n {
34
35 sum_2 += {
36
37 let t0 = x[i] - mean;
38 let t1 = x[i] - mean;
39
40 t0.as_secs_f64() * t1.as_secs_f64()
41 };
42 }
43
44 let stddev = Duration::from_secs_f64((sum_2 / n as f64).sqrt());
45
46 Self { min, max, mean, median, stddev }
47 }
48}
49
50
51