解读 ruby​​ 的基准测试结果:Benchmark.bm 和 Benchmark.bmbm 的区别

Posted

技术标签:

【中文标题】解读 ruby​​ 的基准测试结果:Benchmark.bm 和 Benchmark.bmbm 的区别【英文标题】:Interpreting ruby's benchmark results: difference between Benchmark.bm and Benchmark.bmbm 【发布时间】:2014-03-14 22:12:28 【问题描述】:

我正在用 ruby​​ 测试 4 种不同的算法,但我无法解释从 ruby​​ 的基准实用程序返回的结果。

我对每组算法运行了两次,一次使用 Benchmark.bm,然后再次使用 Benchmark.bmbm。结果如下:

基准测试.bm:

  real   stime  total   utime
1 214.91  3.44  154.93 151.48
2 208.85  3.03  161.37 158.34
3 224.40  3.23  161.63 158.41
4 234.02  3.34  163.49 160.16

基准测试.bmbm:

   real   stime  total  utime
1 252.61  3.50  163.89 160.39
2 278.56  3.65  164.61 160.96
3 241.89  3.37  162.73 159.36
4 256.12  3.56  163.91 160.35

根据这些结果,哪种算法执行得最好(1、2、3 或 4)?使用 Benchmark.bm 和 Benchmark.bmbm 的实际区别是什么。

抱歉,如果在其他地方回答了这个问题,但我找不到直接的答案。

【问题讨论】:

【参考方案1】:

算法之间似乎没有显着差异。通常最相关的数字是“总”,它是 CPU 运行代码所花费的总时间。这些都非常接近。

Benchmark.bmBenchmark.bmbm 之间的区别在于后者运行基准,丢弃结果,然后再次运行并返回第二次运行的结果。这样做的原因是为了避免对某些主体造成不公平的劣势:主体之间可能存在公共资源,只有其中一个需要初始化,并且使用bmbm,您更有可能一切都将是处于“温暖”状态,从而获得公平的结果。

【讨论】:

以上是关于解读 ruby​​ 的基准测试结果:Benchmark.bm 和 Benchmark.bmbm 的区别的主要内容,如果未能解决你的问题,请参考以下文章

PHP 8.1性能基准测试结果出炉,比7.0版本提升44%

ruby Gett媒体基准测试

Ruby基准测试一条多次运行的线[关闭]

rails ruby​​-prof 和基准测试

ruby SQL与ActiveRecord基准测试(订阅者)

一键获取测试脚本,轻松验证“TSBS 时序数据库性能基准测试报告”