我有這樣的代碼,該代碼測試Calendar.getInstance().getTimeInMillis()
VS System.currentTimeMilli()
:如何確保沒有JVM和編譯器優化出現
long before = getTimeInMilli();
for (int i = 0; i < TIMES_TO_ITERATE; i++)
{
long before1 = getTimeInMilli();
doSomeReallyHardWork();
long after1 = getTimeInMilli();
}
long after = getTimeInMilli();
System.out.println(getClass().getSimpleName() + " total is " + (after - before));
我想,以確保沒有JVM或編譯器的優化情況,所以測試將是有效的,實際上會表現出差異。
如何確定?
編輯:我改變了代碼示例,所以它會更清晰。我在這裏檢查的是在不同的實現中調用getTimeInMilli()需要多少時間 - Calendar vs System。
謝謝;這正是我需要讓Java「準確」展示O(1),O(n)和O(n^2)算法之間效率差異的一個課堂演示:-)在Eclipse中,您可以將在運行配置/參數/虛擬機設置。 – 2014-01-02 00:13:32