2013-03-10 33 views
3

我使用帶插件的Eclipse來運行VisualVM。現在VisualVM的說,一個功能的方法調用總是返回180ms時左右,而如果我用手工的方法:VisualVM結果與手動測量有所不同

long start = System.nanoTime(); 
searchConnections(bsTree, connectionList); 
double elapsedTimeInSec = (System.nanoTime() - start) * 1.0e-6; 

我避開50ms的!爲什麼有差異?那麼VisualVM中的測量錯誤?我需要一些項目的測量數據,這就是爲什麼重要的是他們儘可能精確。

回答

1

爲了回答你的問題,沒有一種簡單的方法可以知道爲什麼這些值由於JVM的本質以及它在運行時期間如何優化代碼而有所不同。更不用說System.nanotime()是一個特定於平臺的實現,我不會完全相信它的價值。

因爲VisualVM實際上是在測量它,所以我更可能相信VisualVM對於內聯測量的結果。如果您擔心基準測試或想要真正關注獲得準確結果,我建議您使用Caliper這樣的工具來完成此任務。

相關問題