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:
commit
a9f50bdc16
|
@ -625,17 +625,44 @@ impl<T: Write> ConsoleTestState<T> {
|
|||
}
|
||||
}
|
||||
|
||||
pub fn fmt_bench_samples(bs: &BenchSamples) -> String {
|
||||
if bs.mb_s != 0 {
|
||||
format!("{:>9} ns/iter (+/- {}) = {} MB/s",
|
||||
bs.ns_iter_summ.median as usize,
|
||||
(bs.ns_iter_summ.max - bs.ns_iter_summ.min) as usize,
|
||||
bs.mb_s)
|
||||
} else {
|
||||
format!("{:>9} ns/iter (+/- {})",
|
||||
bs.ns_iter_summ.median as usize,
|
||||
(bs.ns_iter_summ.max - bs.ns_iter_summ.min) as usize)
|
||||
// Format a number with thousands separators
|
||||
fn fmt_thousands_sep(mut n: usize, sep: char) -> String {
|
||||
use std::fmt::Write;
|
||||
let mut output = String::new();
|
||||
let mut first = true;
|
||||
for &pow in &[9, 6, 3, 0] {
|
||||
let base = 10_usize.pow(pow);
|
||||
if pow == 0 || n / base != 0 {
|
||||
if first {
|
||||
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
|
||||
|
|
Loading…
Reference in New Issue