我正在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之间有什么实际区别。
道歉,如果在其他地方得到解答,但我无法找到直接答案。
答案 0 :(得分:1)
算法之间似乎没有显着差异。通常最相关的数字是“总数”,即CPU运行代码所花费的总时间。这些都非常接近。
Benchmark.bm
和Benchmark.bmbm
之间的区别在于后者运行基准测试,抛弃结果,然后再次运行它并返回第二次运行的结果。这样做的原因是为了避免某些主题的不公平劣势:主题之间可能存在只有其中一个需要初始化的共同资源,并且bmbm
你有更好的机会获得一切将处于“温暖”状态,从而获得公平的结果。