我试图做一个典型的“A/B测试”类似于两种不同实现算法的实现,在这两种情况下使用相同的数据集。该算法在执行方面是确定性的,所以我真的希望结果是可重复的。如何测量i7上的java性能?
在Core 2 Duo上,情况也是如此。只使用linux“time”命令,我会得到大约0.1%的执行时间变化(超过10次运行)。
在i7我会得到各种变化,我可以很容易有30%的变化上下平均。我认为这是由于i7所做的各种CPU优化(动态超频等),但它确实很难做这种测试。是否有其他方法可以确定2种算法中的哪种算法是“最好的”,我可以使用的任何其他合理的指标?
编辑:该算法不会持续很长时间,这实际上是我试图进行基准测试的真实场景。所以重复跑并不是真正的选择。
是否可以禁用这些CPU优化?也许通过编译一个定制的内核或设置一些/ proc标志? – 2011-05-04 08:31:31