2012-07-03 43 views
0

我想看看在我的android應用程序中執行某個方法需要多長時間。我的第一個想法是做這樣的事情:代碼優化;測量代碼段之間的時間

Date date1 = new Date(); 

doStuff(); 

Date date2 = new Date(); 

//compare date difference in ms 

但是對於初學者來說,日期對象似乎不具有.getMilliseconds(),並且那就是即時通訊之後。有沒有更容易和/或更好的方法來解決這個問題?

感謝

+0

你可以用'System.currentTimeMillis的()'http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/System.html# currentTimeMillis%28 – DNA

+3

你看過'Date *'上的*方法嗎? 'System.nanoTime'無論如何都是更好的方法,或者'System.currentTimeMillis()',但是你應該找到'Date.getTime()'方法。 –

+0

順便說一下,對於基準測試,我認爲如果nanoTime和currentTimeMillis的不同精度很重要,那麼您不會長時間運行測試!對於單個操作的定時,納米更精確。另見http://stackoverflow.com/questions/504103/how-do-i-write-a-correct-micro-benchmark-in-java – DNA

回答

3

您可能需要使用System.nanoTime()做你的時間計數,因爲它使用可用的最高精度計時器。測試代碼效率時要做的另一件事是,不要只運行一次,而是反覆運行它,並將平均時間作爲您的估計值。從長遠來看,這會帶來更好的結果,因爲如果某些其他程序也試圖運行,CPU使用率可能會激增。

+0

謝謝,正是我需要的 – Johan

0

System.currentTimeMillis()有什麼問題?

long before = System.currentTimeMillis(); 
doStuff(); 
long after = System.currentTimeMillis(); 
+0

http://stackoverflow.com/questions/351565/system-currenttimemillis-vs-system-nanotime – Johan

+0

嗯,剛剛閱讀文檔之前沒有嘗試過 –