Auto merge of #26068 - bluss:bench-sigfigs, r=huonw
test: Display benchmark results with thousands separators Example display: ``` running 9 tests test a ... bench: 0 ns/iter (+/- 0) test b ... bench: 52 ns/iter (+/- 0) test c ... bench: 88 ns/iter (+/- 0) test d ... bench: 618 ns/iter (+/- 111) test e ... bench: 5,933 ns/iter (+/- 87) test f ... bench: 59,280 ns/iter (+/- 1,052) test g ... bench: 588,672 ns/iter (+/- 3,381) test h ... bench: 5,894,227 ns/iter (+/- 303,489) test i ... bench: 59,112,382 ns/iter (+/- 1,500,110) ``` Fixes #10953 Fixes #26109
This commit is contained in:
@@ -625,17 +625,44 @@ impl<T: Write> ConsoleTestState<T> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn fmt_bench_samples(bs: &BenchSamples) -> String {
|
// Format a number with thousands separators
|
||||||
if bs.mb_s != 0 {
|
fn fmt_thousands_sep(mut n: usize, sep: char) -> String {
|
||||||
format!("{:>9} ns/iter (+/- {}) = {} MB/s",
|
use std::fmt::Write;
|
||||||
bs.ns_iter_summ.median as usize,
|
let mut output = String::new();
|
||||||
(bs.ns_iter_summ.max - bs.ns_iter_summ.min) as usize,
|
let mut first = true;
|
||||||
bs.mb_s)
|
for &pow in &[9, 6, 3, 0] {
|
||||||
} else {
|
let base = 10_usize.pow(pow);
|
||||||
format!("{:>9} ns/iter (+/- {})",
|
if pow == 0 || n / base != 0 {
|
||||||
bs.ns_iter_summ.median as usize,
|
if first {
|
||||||
(bs.ns_iter_summ.max - bs.ns_iter_summ.min) as usize)
|
output.write_fmt(format_args!("{}", n / base)).unwrap();
|
||||||
|
} else {
|
||||||
|
output.write_fmt(format_args!("{:03}", n / base)).unwrap();
|
||||||
|
}
|
||||||
|
if pow != 0 {
|
||||||
|
output.push(sep);
|
||||||
|
}
|
||||||
|
first = false;
|
||||||
|
}
|
||||||
|
n %= base;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
output
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn fmt_bench_samples(bs: &BenchSamples) -> String {
|
||||||
|
use std::fmt::Write;
|
||||||
|
let mut output = String::new();
|
||||||
|
|
||||||
|
let median = bs.ns_iter_summ.median as usize;
|
||||||
|
let deviation = (bs.ns_iter_summ.max - bs.ns_iter_summ.min) as usize;
|
||||||
|
|
||||||
|
output.write_fmt(format_args!("{:>11} ns/iter (+/- {})",
|
||||||
|
fmt_thousands_sep(median, ','),
|
||||||
|
fmt_thousands_sep(deviation, ','))).unwrap();
|
||||||
|
if bs.mb_s != 0 {
|
||||||
|
output.write_fmt(format_args!(" = {} MB/s", bs.mb_s)).unwrap();
|
||||||
|
}
|
||||||
|
output
|
||||||
}
|
}
|
||||||
|
|
||||||
// A simple console test runner
|
// A simple console test runner
|
||||||
|
|||||||
Reference in New Issue
Block a user