我想看看在我的android應用程序中執行某個方法需要多長時間。我的第一個想法是做這樣的事情:代碼優化;測量代碼段之間的時間
Date date1 = new Date();
doStuff();
Date date2 = new Date();
//compare date difference in ms
但是對於初學者來說,日期對象似乎不具有.getMilliseconds()
,並且那就是即時通訊之後。有沒有更容易和/或更好的方法來解決這個問題?
感謝
我想看看在我的android應用程序中執行某個方法需要多長時間。我的第一個想法是做這樣的事情:代碼優化;測量代碼段之間的時間
Date date1 = new Date();
doStuff();
Date date2 = new Date();
//compare date difference in ms
但是對於初學者來說,日期對象似乎不具有.getMilliseconds()
,並且那就是即時通訊之後。有沒有更容易和/或更好的方法來解決這個問題?
感謝
您可能需要使用System.nanoTime()
做你的時間計數,因爲它使用可用的最高精度計時器。測試代碼效率時要做的另一件事是,不要只運行一次,而是反覆運行它,並將平均時間作爲您的估計值。從長遠來看,這會帶來更好的結果,因爲如果某些其他程序也試圖運行,CPU使用率可能會激增。
謝謝,正是我需要的 – Johan
System.currentTimeMillis()有什麼問題?
long before = System.currentTimeMillis();
doStuff();
long after = System.currentTimeMillis();
http://stackoverflow.com/questions/351565/system-currenttimemillis-vs-system-nanotime – Johan
嗯,剛剛閱讀文檔之前沒有嘗試過 –
你可以使用Android的分析工具,因爲應用程序在模擬器中運行,可以做這樣的東西,在一個不錯的圖形視圖。
此處瞭解詳情:http://developer.android.com/tools/debugging/debugging-tracing.html
你可以用'System.currentTimeMillis的()'http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/System.html# currentTimeMillis%28 – DNA
你看過'Date *'上的*方法嗎? 'System.nanoTime'無論如何都是更好的方法,或者'System.currentTimeMillis()',但是你應該找到'Date.getTime()'方法。 –
順便說一下,對於基準測試,我認爲如果nanoTime和currentTimeMillis的不同精度很重要,那麼您不會長時間運行測試!對於單個操作的定時,納米更精確。另見http://stackoverflow.com/questions/504103/how-do-i-write-a-correct-micro-benchmark-in-java – DNA