testing - 如何解释 `cargo bench` 的输出?

标签 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 个数字:数学期望值(或均值)和标准差。

最佳答案

数字是 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, ',')
)

source code

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

关于testing - 如何解释 `cargo bench` 的输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48323487/

相关文章:

testing - 以任何定义的文件格式生成样本数据

php - 使用 PHPUnit 7 测试旧的 PHP 版本

performance - 如何在不嗅探的情况下测量 TCP/IP 开销?

google-analytics - 如何使用Google Analytics(分析)Measurement Protocol赋予设备型号名称(ga:mobileDeviceModel)?

ios - 作为 iOS 开发人员我应该使用什么 TestFlight

rust - 如何满足 `impl futures::Future: futures::TryStream` 的特征界限

rust - 名义和借用值(value)的生命周期不够长错误

rust - 如何在 Rust 中编写一个循环来打印 0 到 99 之间的数字?

printing - 如何正确测量打印尺寸和与网络的距离?

ruby-on-rails - 测试期间的 ActionView::MissingTemplate