Add median run time to CSV and JSON export formats

This commit is contained in:
sharkdp 2019-06-08 13:04:39 +02:00
parent 4a67987079
commit 51f92c527d
5 changed files with 21 additions and 1 deletions

View File

@ -3,7 +3,7 @@ use std::io;
use std::process::Stdio; use std::process::Stdio;
use colored::*; use colored::*;
use statistical::{mean, standard_deviation}; use statistical::{mean, median, standard_deviation};
use crate::hyperfine::format::{format_duration, format_duration_unit}; use crate::hyperfine::format::{format_duration, format_duration_unit};
use crate::hyperfine::internal::{get_progress_bar, max, min, MIN_EXECUTION_TIME}; use crate::hyperfine::internal::{get_progress_bar, max, min, MIN_EXECUTION_TIME};
@ -313,6 +313,7 @@ pub fn run_benchmark(
let t_num = times_real.len(); let t_num = times_real.len();
let t_mean = mean(&times_real); let t_mean = mean(&times_real);
let t_stddev = standard_deviation(&times_real, Some(t_mean)); let t_stddev = standard_deviation(&times_real, Some(t_mean));
let t_median = median(&times_real);
let t_min = min(&times_real); let t_min = min(&times_real);
let t_max = max(&times_real); let t_max = max(&times_real);
@ -394,6 +395,7 @@ pub fn run_benchmark(
cmd.get_shell_command(), cmd.get_shell_command(),
t_mean, t_mean,
t_stddev, t_stddev,
t_median,
user_mean, user_mean,
system_mean, system_mean,
t_min, t_min,

View File

@ -87,6 +87,7 @@ fn test_asciidoc_table_row() {
String::from("sleep 1"), // command String::from("sleep 1"), // command
0.10491992406666667, // mean 0.10491992406666667, // mean
0.00397851689425097, // stddev 0.00397851689425097, // stddev
0.10491992406666667, // median
0.005182013333333333, // user 0.005182013333333333, // user
0.0, // system 0.0, // system
0.1003342584, // min 0.1003342584, // min
@ -137,6 +138,7 @@ fn test_asciidoc_table_row_command_escape() {
String::from("sleep 1|"), // command String::from("sleep 1|"), // command
0.10491992406666667, // mean 0.10491992406666667, // mean
0.00397851689425097, // stddev 0.00397851689425097, // stddev
0.10491992406666667, // median
0.005182013333333333, // user 0.005182013333333333, // user
0.0, // system 0.0, // system
0.1003342584, // min 0.1003342584, // min
@ -174,6 +176,7 @@ fn test_asciidoc() {
String::from("command | 1"), String::from("command | 1"),
1.0, 1.0,
2.0, 2.0,
1.0,
3.0, 3.0,
4.0, 4.0,
5.0, 5.0,
@ -185,6 +188,7 @@ fn test_asciidoc() {
String::from("command | 2"), String::from("command | 2"),
11.0, 11.0,
12.0, 12.0,
11.0,
13.0, 13.0,
14.0, 14.0,
15.0, 15.0,

View File

@ -84,6 +84,7 @@ fn test_markdown_format_ms() {
String::from("sleep 0.1"), String::from("sleep 0.1"),
0.1057, // mean 0.1057, // mean
0.0016, // std dev 0.0016, // std dev
0.1057, // median
0.0009, // user_mean 0.0009, // user_mean
0.0011, // system_mean 0.0011, // system_mean
0.1023, // min 0.1023, // min
@ -96,6 +97,7 @@ fn test_markdown_format_ms() {
String::from("sleep 2"), String::from("sleep 2"),
2.0050, // mean 2.0050, // mean
0.0020, // std dev 0.0020, // std dev
2.0050, // median
0.0009, // user_mean 0.0009, // user_mean
0.0012, // system_mean 0.0012, // system_mean
2.0020, // min 2.0020, // min
@ -129,6 +131,7 @@ fn test_markdown_format_s() {
String::from("sleep 2"), String::from("sleep 2"),
2.0050, // mean 2.0050, // mean
0.0020, // std dev 0.0020, // std dev
2.0050, // median
0.0009, // user_mean 0.0009, // user_mean
0.0012, // system_mean 0.0012, // system_mean
2.0020, // min 2.0020, // min
@ -141,6 +144,7 @@ fn test_markdown_format_s() {
String::from("sleep 0.1"), String::from("sleep 0.1"),
0.1057, // mean 0.1057, // mean
0.0016, // std dev 0.0016, // std dev
0.1057, // median
0.0009, // user_mean 0.0009, // user_mean
0.0011, // system_mean 0.0011, // system_mean
0.1023, // min 0.1023, // min
@ -173,6 +177,7 @@ fn test_markdown_format_time_unit_s() {
String::from("sleep 0.1"), String::from("sleep 0.1"),
0.1057, // mean 0.1057, // mean
0.0016, // std dev 0.0016, // std dev
0.1057, // median
0.0009, // user_mean 0.0009, // user_mean
0.0011, // system_mean 0.0011, // system_mean
0.1023, // min 0.1023, // min
@ -185,6 +190,7 @@ fn test_markdown_format_time_unit_s() {
String::from("sleep 2"), String::from("sleep 2"),
2.0050, // mean 2.0050, // mean
0.0020, // std dev 0.0020, // std dev
2.0050, // median
0.0009, // user_mean 0.0009, // user_mean
0.0012, // system_mean 0.0012, // system_mean
2.0020, // min 2.0020, // min
@ -223,6 +229,7 @@ fn test_markdown_format_time_unit_ms() {
String::from("sleep 2"), String::from("sleep 2"),
2.0050, // mean 2.0050, // mean
0.0020, // std dev 0.0020, // std dev
2.0050, // median
0.0009, // user_mean 0.0009, // user_mean
0.0012, // system_mean 0.0012, // system_mean
2.0020, // min 2.0020, // min
@ -235,6 +242,7 @@ fn test_markdown_format_time_unit_ms() {
String::from("sleep 0.1"), String::from("sleep 0.1"),
0.1057, // mean 0.1057, // mean
0.0016, // std dev 0.0016, // std dev
0.1057, // median
0.0009, // user_mean 0.0009, // user_mean
0.0011, // system_mean 0.0011, // system_mean
0.1023, // min 0.1023, // min

View File

@ -125,6 +125,7 @@ fn test_compute_relative_speed() {
command: name.into(), command: name.into(),
mean: mean, mean: mean,
stddev: 1.0, stddev: 1.0,
median: mean,
user: mean, user: mean,
system: 0.0, system: 0.0,
min: mean, min: mean,

View File

@ -159,6 +159,9 @@ pub struct BenchmarkResult {
/// The standard deviation of all run times /// The standard deviation of all run times
pub stddev: Second, pub stddev: Second,
/// The median run time
pub median: Second,
/// Time spend in user space /// Time spend in user space
pub user: Second, pub user: Second,
@ -186,6 +189,7 @@ impl BenchmarkResult {
command: String, command: String,
mean: Second, mean: Second,
stddev: Second, stddev: Second,
median: Second,
user: Second, user: Second,
system: Second, system: Second,
min: Second, min: Second,
@ -197,6 +201,7 @@ impl BenchmarkResult {
command, command,
mean, mean,
stddev, stddev,
median,
user, user,
system, system,
min, min,