From dc04fe851339855ba971cfbaebd7bedb668ea6d6 Mon Sep 17 00:00:00 2001 From: "Sergey \"Shnatsel\" Davidoff" Date: Sat, 15 Sep 2018 02:08:56 +0300 Subject: [PATCH] Compute and print standard deviation of the speed ratio --- src/hyperfine/internal.rs | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/hyperfine/internal.rs b/src/hyperfine/internal.rs index cc5289d..ea7b782 100644 --- a/src/hyperfine/internal.rs +++ b/src/hyperfine/internal.rs @@ -68,11 +68,16 @@ pub fn write_benchmark_comparison(results: &Vec) { longer_items.sort_by(|l, r| l.mean.partial_cmp(&r.mean).unwrap_or(Ordering::Equal)); for item in longer_items { + let ratio = item.mean / fastest_item.mean; + // https://en.wikipedia.org/wiki/Propagation_of_uncertainty#Example_formulas + // Covariance asssumed to be 0, i.e. variables are assumed to be independent + let ratio_stddev = ratio * ( (item.stddev/item.mean).powi(2) + (fastest_item.stddev/fastest_item.mean).powi(2) ).sqrt(); println!( - "{} faster than '{}'", - format!("{:8.2}x", item.mean / fastest_item.mean) + "{} ± {} faster than '{}'", + format!("{:8.2}x", ratio) .bold() .green(), + format!("{:.2}", ratio_stddev).green(), &item.command.magenta() ); }