我試圖做一個典型的「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