如何解读Rust工具`cargo bench`的基准测试输出结果?
解读Rust
cargo bench的基准测试结果 我来给你拆解下cargo bench输出里的这些数值到底是什么意思~首先得纠正一个小误解:你看到的那些逗号只是千位分隔符,用来让大数字更易读,并不是把数值拆成多个独立数字的标记哦!
先看完整测试行的含义
拿你给出的结果举例子:
test bench_few_core ... bench: 26,249,920 ns/iter (+/- 2,836,381)
每个部分的含义是:
bench_few_core:这是你编写的基准测试函数的名称,对应代码里用#[bench]标记的函数26,249,920 ns/iter:这是测试的平均耗时,单位是纳秒(ns),意思是每次执行这个测试函数(一次迭代)平均需要26249920纳秒——换算一下就是约26.25毫秒(1毫秒=1,000,000纳秒)。这里的逗号只是千位分隔,方便读大数字,去掉逗号就是完整的数值:26249920(+/- 2,836,381):这是测试结果的标准差,代表执行时间的波动范围。也就是说,大部分测试迭代的耗时会落在「平均值 ± 这个标准差」的区间里(比如26249920 - 2836381 = 23413539 ns 到 26249920 + 2836381 = 29086301 ns之间)。标准差越小,说明你的代码执行时间越稳定。
再对应你拆分的数字理解
你把26,249,920拆成了26、249、920,其实这三个部分合起来就是26*1,000,000 + 249*1,000 + 920 = 26,249,920,只是用逗号分隔了百万位、千位而已。同理(+/- 2,836,381)里的2、836、381合起来是2,836,381,也就是约2.84毫秒的波动范围。
再看另一个测试结果:
test bench_one_core ... bench: 6,087,923 ns/iter (+/- 752,064)
这个就代表每次迭代平均耗时约6.09毫秒,标准差约0.75毫秒,相比bench_few_core的波动更小,执行时间更稳定。
内容的提问来源于stack exchange,提问作者Sergey




