我用Java編寫了一個程序,並對它進行了測試,它使用不同的測試數據對程序進行了幾十億次測試。該程序本身只做計算並且正在使用字符串(我無法提供源代碼,對不起)。爲了加快速度,它使用帶有16個線程的8核心CPU上的15個線程的線程池,最多需要12個小時才能完成。Java巨大與同一測試的性能差異
問題是,整個測試的性能從開始到開始都有所不同。經過一點熱身後,我通常每秒獲得3百萬次測試,但有時每秒只有200萬次測試。這種性能差異會持續整個測試時間(8-12小時),所以它與JIT無關。如果我取消一個慢速測試並使用完全相同的命令行再次運行,那麼第二次嘗試的速度就會更快。到目前爲止,我注意到從開始到開始的差異高達50%。
我在做一些完全錯誤的事情,或者是什麼原因?
它可能是因爲緩存 –
@Nachiket,但爲什麼應該在8小時內表現不同? –