我如何解释`货物工作台'的输出?

时间:2018-01-18 14:23:10

标签: testing rust measurement

我使用cargo bench对我的Rust项目进行基准测试,并在结果上看到很多数字......这是什么意思?

2 tests
test bench_few_core ... bench:  26,249,920 ns/iter (+/- 2,836,381)
test bench_one_core ... bench:   6,087,923 ns/iter (+/- 752,064)

例如test bench_few_core,我看到:

  • 数字1 = 26
  • 数字2 = 249
  • 数字3 = 920
  • 数字4 = 2
  • 数字5 = 836
  • 数字6 = 381

他们都是什么意思?

我认为每次测试应该有2个数字:数学期望(或平均值)和标准偏差。

2 个答案:

答案 0 :(得分:2)

数字是average和最大之间的差异,使用以美国为中心的数字样式(使用逗号作为千位分隔符)表示。

对于你的例子:

  • 平均值:26249920 ns / iter
  • max-min:2836381 ns / iter
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, ',')))

source code

请注意,有各种统计工作underlying the benchmarking,最明显的是上下5%的样本被截断以减少异常值的影响。

答案 1 :(得分:1)

您的示例确实显示了您希望每次测试的两个数字:中位数和总偏差(即max-min),每次迭代以纳秒为单位。

请注意,对于大数字,美国英语的标准做法是以逗号分隔的3个组中写入数字。例如,26249920经常写成26,249,920。