2012-10-21 47 views
0

我正在尋找測量java中混合方法的執行時間。更精確地說我已經實現System.nanoTime()方法,而不是System.currentTimeMillis的():測量Java的執行時間不起作用

long startTime = System.nanoTime(); 
ServerRequestState state = (ServerRequestState) search.getGoalState(); 
long endTime = System.nanoTime();    
long elapsedTime = (endTime - startTime)/1000000; // time in ms 

但是,這並沒有爲我工作,30和40之間秒後運行的方法,但對結果變量elapsedTime僅表示4毫秒,在某些情況下爲1毫秒。

任何想法爲什麼這不起作用?

回答

6

1毫秒== 1,000,000納秒。

我會推薦使用Guava的Stopwatch來做你正在做的事情。

+0

我在複製代碼時已經做了勘誤。感謝您的建議。 – jaumevn

+0

那麼你可能沒有測量實際採取那些30到40秒的內容。通過'Thread.sleep(30000L)'將調用替換爲'search.getGoalState()',您將看到代碼的經過時間測量爲30000 ms。 –