解释ruby的基准测试结果:Benchmark.bm和Benchmark.bmbm之间的差异

时间:2014-03-14 22:12:28

标签: ruby performance profiling benchmarking

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

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

Benchmark.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

Benchmark.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 个答案:

答案 0 :(得分:1)

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

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