Androidアプリのプロファイルを作成するにはどうすればよいですか?[閉まっている]


93

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

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


Androidに慣れていません。割り込み可能なデバッガーの下でアプリを実行できますか?もしそうなら、このメソッドは動作しますstackoverflow.com/questions/375913/...を
マイクDunlavey

うーん、面白い。少し手間がかかりますが、より深刻なパフォーマンスの問題を見つけるのに役立つ可能性があります。ありがとう。
teedyay

私はあなたがそう思うことができる方法を理解する:stackoverflow.com/questions/2624667/...
マイクDunlavey

今日では、Eclipse内でプロファイリングを行うことができます。TraceViewなどのスタンドアロン/手動起動を忘れます。詳細については、それに関するブログ記事を書いてみたいと思います。詳細が必要な場合は、pingを実行してください。
KarolDepka

2
TraceViewやDDMSよりも優れた機能があることをお勧めします。それは何ですか?
Peri Hartman

回答:


37

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


2
これを実行すると、コマンドラインバージョンが非推奨になり、終了します。新しい方法は何ですか?
ゴンゾブレーン

18

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

詳細な例を含むこのドキュメントは、DDMSの取り扱いに役立つはずです。


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


4
DDMSに関するAndroidドキュメント:developer.android.com/tools/debugging/ddms.html
sulai

11

何をテストするかによって異なります。

Android向けのアプリケーションを開発する場合は、TimingLoggerクラスを試す必要があります。見てみましょう。この記事 TimingLoggerヘルパークラスの使用方法を説明します。

非常に優れたツールはJMeterで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のチュートリアルも見つけることができます。


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.