2010-10-06 49 views
91

我需要找到我的Android應用中的瓶頸位置。如何分析我的Android應用程序?

我可以使用哪些分析工具或技術?

+0

我對Android不熟悉。你可以在可以打斷的調試器下運行應用程序嗎?如果是這樣,這個方法的工作原理:http://stackoverflow.com/questions/375913/what-c​​an-i-use-to-profile-c-code-in-linux/378024#378024 – 2010-10-06 20:57:06

+0

嗯,有趣。勞動密集型,但可能用於發現更明顯的性能問題。謝謝。 – teedyay 2010-10-07 08:10:44

+0

我明白你是怎麼想的:http://stackoverflow.com/questions/2624667/whats-a-very-easy-c-profiler-vc/2624725#2624725 – 2010-10-07 11:26:56

回答

35

您可以使用Traceview。這遠非理想,而是有效。 This article描述如何使用它。

+2

當我運行它時,它表示命令行版本已被棄用,然後退出。什麼是新方法? – gonzobrains 2013-05-09 18:51:00

18

DDMS是Android的最佳選擇。 默認情況下,它包含在ADT插件中。

This具有詳細示例的文檔應該可以幫助您處理DDMS。


對於內存分析,嘗試的Eclipse MAT

+4

有關DDMS的Android文檔:http://developer.android.com/tools/debugging/ddms.html – sulai 2013-01-14 15:59:29

11

這取決於你要測試幹嘛。

如果您爲Android開發應用程序,則應該嘗試使用TimingLogger類。看看描述TimingLogger助手類的用法的this article

一個很好的工具是JMeter,還有一個plugin for Android

如果您不想使用外部工具,但採用非常標準的方式來度量已用時間,則必須使用System.nanoTime()。你不應該使用currentTimeMillis,因爲它測量掛鐘時間ans,因爲沒有計算機的時鐘是完美的(它們偶爾都需要校正),所以有一個運行的過程並不斷髮出對系統時鐘的小的修正。更不用說閏秒修正了。

儘管經常使用currentTimeMillis,但測量已用時間和時間仍然不正確。無論如何,因爲調用需要一些時間,所以你不應該期望正確的時間間隔非常小。但這不應該是Android的問題。

我會告訴你一個例子:

long startTime = System.nanoTime(); 

// run/call the method 

long endTime = System.nanoTime(); 
long diff = endTime - startTime ; 
System.out.println("Elapsed milliseconds: " + diff /1000000); 

你可以有這個免費的圖書館看看還有:http://jetm.void.fm/

您還可以找到JMeter的教程。