解读 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.bm
和Benchmark.bmbm
之间的区别在于后者运行基准,丢弃结果,然后再次运行并返回第二次运行的结果。这样做的原因是为了避免对某些主体造成不公平的劣势:主体之间可能存在公共资源,只有其中一个需要初始化,并且使用bmbm
,您更有可能一切都将是处于“温暖”状态,从而获得公平的结果。
【讨论】:
以上是关于解读 ruby 的基准测试结果:Benchmark.bm 和 Benchmark.bmbm 的区别的主要内容,如果未能解决你的问题,请参考以下文章