web-dev-qa-db-ja.com

Androidアプリをプロファイルするにはどうすればよいですか?

私のAndroidアプリでボトルネックがどこにあるかを見つける必要があります。

どのプロファイリングツールまたはテクニックを使用できますか?

92
teedyay

Traceviewを使用できます。それは理想とはほど遠いですが、動作します。 この記事 使用方法について説明します。

37
cement

DDMSはAndroidに最適です。デフォルトでは、ADTプラグインに含まれています。

これ 詳細な例を記載したドキュメントは、DDMSの処理に役立ちます。


メモリ分析については、Eclipse MATを試してください

18
Shahul3D

何をテストするかによります。

Androidのアプリケーションを開発する場合は、TimingLoggerクラスを試してください。 この記事 TimingLoggerヘルパークラスの使用方法をご覧ください。

非常に良いツールは JMeter で、 Android用プラグイン もあります。

外部ツールを使用したくないが、非常に標準的な方法で経過時間を測定する場合は、System.nanoTime()を使用する必要があります。 currentTimeMillisを使用するべきではありません。それは壁時計の時間と時間を測定するからです。コンピューターの時計は完璧ではないので(すべて修正する必要がある場合があります)、システム時計に小さな修正を継続的に発行するプロセスがあります。うるう秒の修正は言うまでもありません。

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 のチュートリアルもあります。

11
David

http://developer.Android.com/training/articles/perf-tips.html で推奨される別のツールはCaliperです: https://code.google.com/p/caliper / 。 (使用していないので、あまり知りません。)

0
Erhannis