Android SDKには、プロファイリングツールである、TraceViewが付属しています。

traceview tao.trace

TraceViewについてのドキュメントは以下にあります。Traceview: A Graphical Log Viewer

連載記事になれば良いなぁと思い、TraceViewのファーストステップです。

1. 計測したい位置にコードを追加する

以下のように、計測開始位置にstart計測終了位置にstopメソッドを追加します。

最初に感じをつかむために使用するのであれば、OnCreate()と、onDestoroy()に入れてしまえば良いです。


// start tracing to "/sdcard/tao.trace"
Debug.startMethodTracing("tao");
// ...
// stop tracing
Debug.stopMethodTracing();

2.実行する

先ほどstart,stopした位置のソースが動作するようにエミュレータで実行させます。

3.ログファイルの吸い出し

先の例では、「/sdcard/tao.trace」というログファイルが作製されているので、ログファイルをPCに持ってきます。

EclipseのDDMSのGUIを使ってもいいですし、adb pullコマンドを使っても良いです。


adb pull /sdcard/tao.trace tao.trace

4.TraceViewの起動

ファイルはフルパスで指定する必要があります。カレントディレクトリにおいて、traceview tao.traceとするとファイルが見つかりませんと言われます。


traceview c:\android\tao.trace

traceviewを実行すると、この記事の最初の画面のようなウインドウが表示されます。
後はこのログを見ていきどこにボトルネックがあるのかを判断していきます。

TraceViewの説明

上段はTimeline Panel下段は、Profile Panelと呼びます。操作方法は触っているとわかると思いますが、Profile Panelの一番したに、Findが用意されているのでメソッド名による検索も可能です。

  • Incl %

    Inclusive時間のトータルタイムからのパーセンテージ

  • Inclusive

    そのメソッドと、そのメソッドから呼ばれたメソッドの実行時間

  • Excl %

    Exclusive時間のトータルタイムからのパーセンテージ

  • Exclusive

    そのメソッドの実行時間

  • Cals+RecurCalls/Total

    このメソッドが何回呼ばれたか/再帰で何回呼ばれたか

  • Time/Call

    メソッドの実行時間(ミリセック)


C:\android>traceview
Usage: java com.android.traceview.MainWindow [-r] trace
-r   regression only

データ解析例

この記事のトップの画像で表示しているのは、OnCreateと、OnDestroyにstartMethodTracingと、stopMethodTracingを入れた結果です。実際にはこのような使用方法をしません。かなり多くのログが出てきて醜いですし、実際に時間がかかっている部分は分かっているわけですのでそこに埋め込みます。

次回具体的な例を踏まえつつ記事にできたらいいなぁと思ってます。

ブログ内の関連する記事