Androidでプロファイリング(traceview)
プログラマの皆さん、今回はAndroidのプロファイラの使い方をご紹介したいと思います。
デバッガツール(プロファイラなどを含む)を使うことは非常に大事です。ここをうまく使いこなせるかどうかがプログラムの品質、開発スピードに大きく影響すると思っています。
めんどくさいと思わず積極的に使いましょう。
ということでAndroidアプリのプロファイラであるtraceviewというものを使ってみたいと思います。
これは、android-sdkをダウンロードしたディレクトリ以下にあります。
(Android Home)/tools/traceview
では使ってみましょう。
1.プロファイルをとりたい箇所に以下のコードを埋め込む。
使い方の例として、startMethodTracing()をonCreate()でコールして、stopMethodTracing
()をonDestroy()でコールするとそのActivityのプロファイルが取得できます。
startMethodTracing()の引数でファイル名を指定できます。このコードの場合、/sdcard/patom.traceにプロファイルファイルが出力されます。
2.実行しプロファイルをとる。
普通に実行するだけです。
3.本体から取得したプロファイルをとってくる
以下のコマンドを実行し、実機から取得します。
$ adb pull /sdcard/patom.trace /tmp
4.traceviewを起動する
$ traceview /tmp/patom
traceviewを起動すると次のような画面が立ち上がります。
Timeline PanelとProfile Panelに分かれています。
Timelne Panelが横軸に時間を取って、時系列に処理にかかっている時間を表示しています。
Profile Panelで実際にどの処理にどのくらい時間がかかっているのかが割合と時間で確認できます。
「Excl %」と表記されているのが関数ごとにかかっている時間を表示しています。
ここを見ればどこに時間がかかっているのかがわかりやすいと思います。今回の場合は
android/graphics/BitmapFactory.nativeDecodeStreamに全体の43.1%、14785.880 msecかかっていることがわかります。
このアプリのチューニングポイントはここにありそうです!。
Androidのサイトにも載っています。
http://developer.android.com/intl/ja/guide/developing/tools/traceview.html
以上です。みなさん使ってみてください。

