diff options
| author | bors <bors@rust-lang.org> | 2015-06-09 09:12:09 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2015-06-09 09:12:09 +0000 |
| commit | a9f50bdc16e27debb9896e74313193915ed29a41 (patch) | |
| tree | 40b9682d1c4ca01a26972978e6446a2087332fc0 | |
| parent | 6daf1dcb80e324df94ad4a1d263c832ab589b33a (diff) | |
| parent | 2b50c157d62f566fc367693cd15d55568fb5e33e (diff) | |
| download | rust-a9f50bdc16e27debb9896e74313193915ed29a41.tar.gz rust-a9f50bdc16e27debb9896e74313193915ed29a41.zip | |
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
| -rw-r--r-- | src/libtest/lib.rs | 43 |
1 files changed, 35 insertions, 8 deletions
diff --git a/src/libtest/lib.rs b/src/libtest/lib.rs index ab513f0105b..5ea843918be 100644 --- a/src/libtest/lib.rs +++ b/src/libtest/lib.rs @@ -625,17 +625,44 @@ impl<T: Write> ConsoleTestState<T> { } } +// 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 { - 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) + output.write_fmt(format_args!(" = {} MB/s", bs.mb_s)).unwrap(); } + output } // A simple console test runner |
