我如何解释 `cargo bench` 的输出?
How do I interpret the output of `cargo bench`?
我用 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 个数字:数学期望值(或均值)和标准差。
数字是最大值和最小值之间的 median 和 差 ,使用以美国为中心的数字样式表示(使用逗号作为千位分隔符) .
以你的例子为例:
- 中位数:26249920 ns/iter
- 最大最小值: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;
write!(
output,
"{:>11} ns/iter (+/- {})",
fmt_thousands_sep(median, ','),
fmt_thousands_sep(deviation, ',')
)
请注意,有各种统计工作 underlying the benchmarking,最明显的事实是样本的上下 5% 被截断以减少离群值的影响。
您的示例确实显示了您期望每次测试的两个数字:每次迭代的中位数和总偏差(即 max-min
),以纳秒为单位。
请注意,对于较大的数字,美国英语的标准做法是将数字以 3 为一组,以逗号分隔。比如26249920经常写成26249920。
我用 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 个数字:数学期望值(或均值)和标准差。
数字是最大值和最小值之间的 median 和 差 ,使用以美国为中心的数字样式表示(使用逗号作为千位分隔符) .
以你的例子为例:
- 中位数:26249920 ns/iter
- 最大最小值: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;
write!(
output,
"{:>11} ns/iter (+/- {})",
fmt_thousands_sep(median, ','),
fmt_thousands_sep(deviation, ',')
)
请注意,有各种统计工作 underlying the benchmarking,最明显的事实是样本的上下 5% 被截断以减少离群值的影响。
您的示例确实显示了您期望每次测试的两个数字:每次迭代的中位数和总偏差(即 max-min
),以纳秒为单位。
请注意,对于较大的数字,美国英语的标准做法是将数字以 3 为一组,以逗号分隔。比如26249920经常写成26249920。