我在某些代碼上做了一些性能優化,我有兩種計算方法。在性能測試時停止java優化方法調用的最佳方法
我有一個簡單的測試工具:
long start, end;
long oldDuration, newDuration;
int answer;
final int TEST_COUNT = 1000;
start = System.currentTimeMillis();
for(int i = 0 ; i < TEST_COUNT; i++)
{
answer = doCaluculationNewWay()
}
end = System.currentTimeMillis();
newDuration = end - start;
start = System.currentTimeMillis();
for(int i = 0 ; i < TEST_COUNT; i++)
{
answer = doCaluculationOldWay()
}
end = System.currentTimeMillis();
oldDuration = end - start;
我怎麼能肯定的是,JVM心不是隻是二進制化的呼叫,知道正在使用的答案心不是?
我認爲讓答案變得不穩定,但我擔心由於內存同步問題它會帶來額外的性能開銷。
這不是一個很好的線束。我建議在無限循環中多次運行它們,然後忽略前10次運行。這需要一段時間才能穩定下來,並且所有事情都需要熱點彙編,等等。你永遠不應該看第一組結果。只要手動終止測試,看起來已經穩定下來了。 – 2010-11-17 14:57:32