狠狠撸

狠狠撸Share a Scribd company logo
ANDROID HACKS #59 Traceview  を使う 担当:かわらたん Twitter : @pfkawara Blog : http://kawara-tan.blogspot.com/ 09/19/11
この資料について この資料は下記の本をベースに勉強会で作成した資料です。 『 Android Hacks 』(株式会社ブリリアントサービス著、オライリー?ジャパン刊) この本の紹介ページが下記にあります。 http://www.oreilly.co.jp/books/9784873114569/ 09/19/11
アジェンダ Traceview とは 概要 Traceview を使うには SD カードをマウントする Trace ログを生成する Trace ログを引っこ抜く Traceview でログを解析する Traceview 実行 タイムラインパネル プロファイルパネル 解析方法 09/19/11
1. Traceview とは 09/19/11
1.  概要 デバイス上で動く Android アプリケーションのパフォーマンスをグラフィカルに解析できるデバッグツール 処理が重くなる箇所を見つけ、最適化すべきメソッドを特定できる Trace 対象は VM 全体 ツールを使うには以下のステップが必要 SD カードをマウントする Trace ログを生成する Trace ログを引っこ抜く 09/19/11 Traceview: A Graphical Log Viewer http://developer.android.com/guide/developing/tools/traceview.html
2. Traceview を使うには 09/19/11
1. SD カードをマウントする Trace ログは SD カードに保存されるため、 SD カードが端末に差しこまれている ( マウントされている ) 必要がある。 ここではエミュレータに SD カードをマウントする場合について説明する。 SD カードのイメージを作る。 tools にある mksdcard コマンドを実行する $> mksdcard  容量 生成ファイル名 09/19/11
1. SD カードをマウントする AVD で SD カードイメージファイルを指定する。 Eclipse で「ウィンドウ」->「 Android SDK  および  AVD  マネージャ」をクリック エミュレータ一覧から自分が使うエミュレータを選択し、「編集」ボタンをクリック。または「新規」ボタンをクリックして、エミュレータを新しく作る 右図の画面が出るので、「 SD Card 」の欄にある「参照」ボタンをクリックし、作ったイメージファイルを指定する。 「 Edit AVD 」を押して画面を閉じる。 09/19/11
2. Trace ログを生成する Java のソースコードに以下のメソッドを埋め込む。 Debug.startMethodTracing(string)   Trace ログ取得開始 引数の文字列は出力される trace ログファイル名 パスを指定することも可能 ( デフォルトは /sdcard) ちなみに、 /sdcard  は /mnt/sdcard へのシンボリックリンク Debug.stopMethodTracng()       Trace ログ取得終了 アプリの起動から終了までを採りたい場合、 start ~ () は Activity の onCreate() 内で、 stop ~ () は onDestroy() で呼ぶのが良い 09/19/11
2. Trace ログを生成する Permission 設定 SD カードにファイルを作り、メッセージを書き込むために Permission を設定する必要がある。 でないと、 Permission Denied が発生してアプリが落ちる。 AndroidManifest.xml に以下を追記する。 09/19/11
2. Trace ログを生成する アプリを実行すると、ファイル?エクスプローラの sdcard フォルダに trace ログファイルが生成される。 ファイルエクスプローラは Eclipse の DDMS パースペクティブからファイル?エクスプローラービューで見れる。 09/19/11
2. Trace ログを生成する また、 startMethodTrace() 呼び出しと stopMethodTrace() の呼び出しが LogCat 上に表示される。 09/19/11
3. Trace ログを引っこ抜く SD カードに保存された trace ログファイルを引っこ抜く。 adb pull  で trace ファイルを指定する。 09/19/11
3. Traceview でログを解析する 09/19/11
1. Traceview 実行 tools にある traceview を実行する。 trace ログファイルを「絶対パス」で指定する。 なぜ相対パス指定できないのか不明 実行すると以下の画面が現れる。 上部分:タイムラインパネル 下部分:プロファイルパネル 09/19/11
2.  タイムラインパネル Traceview の上部分はタイムラインパネルと呼ばれ、各スレッド毎にコールされたメソッドがグラフ上に表示される。 メソッドは時系列で並んでおり、コールされる順序やメソッドの使用頻度、実行に要した時間を見ることが可能。 以下の操作が ( マウスのみで ) 可能 クリック:そのメソッドがコールされている場所全てをアニメーションで表示?、プロファイルパネルの関連情報をソートする ドラック:任意の大きさに拡大可能。戻すときはダブルクリック 09/19/11
3.  プロファイルパネル Traceview の舌部分はプロファイルパネルと呼ばれ、メソッドの実行時間に関するデータを見ることが可能 各項目をクリックするとメソッド内の詳細な統計が表示され、タイムラインパネルのどこに該当するか知らせてくれる。 09/19/11
3.  プロファイルパネル 各項目は以下の通り 09/19/11 項目名 意味 name メソッド名 Inclusive そのメソッドとそのメソッドから呼ばれたメソッドの実行時間の合計 Incl% 最大経過時間に対する Inclusive タイムの割合 Exclusive そのメソッドの実行時間 Excl% 最大経過時間に対する Exclusive タイムの割合 Calls + Recur Calls/Total このメソッドのコール回数  +  再帰的にコールされた回数 Time/Call 平均タイム
4.  解析方法 Traceview ですべきことは実行時間を多く費やしている処理を発見し、最適化すべきメソッドを特定する事 Excl% を降順でソート->実際にメソッド実行に費やされた時間なので、他と比べて高い場合は最適化の対象 Excl% の値が高いメソッドを最適化してもパフォーマンスが改善されない場合->プログラム全体の作りが悪い。 Incl% を降順でソートし、他と比べて高い場合は最適化の対象。 Incl% は体感速度に直結する。 09/19/11
参考 URL Android Developers http://developer.android.com/intl/ja/index.html Android エミュレーターの仮想 SD カードを使う http://www.usefullcode.net/2010/12/androidsd.html Android1.6 以降 プロファイラ traceview の落とし穴 http://blog.livedoor.jp/sylc/archives/1478471.html Android TraceView  基本編 http://www.taosoftware.co.jp/blog/2009/11/android_traceview.html 09/19/11

More Related Content

Android Hacks - Hack59

  • 1. ANDROID HACKS #59 Traceview を使う 担当:かわらたん Twitter : @pfkawara Blog : http://kawara-tan.blogspot.com/ 09/19/11
  • 2. この資料について この資料は下記の本をベースに勉強会で作成した資料です。 『 Android Hacks 』(株式会社ブリリアントサービス著、オライリー?ジャパン刊) この本の紹介ページが下記にあります。 http://www.oreilly.co.jp/books/9784873114569/ 09/19/11
  • 3. アジェンダ Traceview とは 概要 Traceview を使うには SD カードをマウントする Trace ログを生成する Trace ログを引っこ抜く Traceview でログを解析する Traceview 実行 タイムラインパネル プロファイルパネル 解析方法 09/19/11
  • 5. 1. 概要 デバイス上で動く Android アプリケーションのパフォーマンスをグラフィカルに解析できるデバッグツール 処理が重くなる箇所を見つけ、最適化すべきメソッドを特定できる Trace 対象は VM 全体 ツールを使うには以下のステップが必要 SD カードをマウントする Trace ログを生成する Trace ログを引っこ抜く 09/19/11 Traceview: A Graphical Log Viewer http://developer.android.com/guide/developing/tools/traceview.html
  • 7. 1. SD カードをマウントする Trace ログは SD カードに保存されるため、 SD カードが端末に差しこまれている ( マウントされている ) 必要がある。 ここではエミュレータに SD カードをマウントする場合について説明する。 SD カードのイメージを作る。 tools にある mksdcard コマンドを実行する $> mksdcard 容量 生成ファイル名 09/19/11
  • 8. 1. SD カードをマウントする AVD で SD カードイメージファイルを指定する。 Eclipse で「ウィンドウ」->「 Android SDK および AVD マネージャ」をクリック エミュレータ一覧から自分が使うエミュレータを選択し、「編集」ボタンをクリック。または「新規」ボタンをクリックして、エミュレータを新しく作る 右図の画面が出るので、「 SD Card 」の欄にある「参照」ボタンをクリックし、作ったイメージファイルを指定する。 「 Edit AVD 」を押して画面を閉じる。 09/19/11
  • 9. 2. Trace ログを生成する Java のソースコードに以下のメソッドを埋め込む。 Debug.startMethodTracing(string)   Trace ログ取得開始 引数の文字列は出力される trace ログファイル名 パスを指定することも可能 ( デフォルトは /sdcard) ちなみに、 /sdcard は /mnt/sdcard へのシンボリックリンク Debug.stopMethodTracng()       Trace ログ取得終了 アプリの起動から終了までを採りたい場合、 start ~ () は Activity の onCreate() 内で、 stop ~ () は onDestroy() で呼ぶのが良い 09/19/11
  • 10. 2. Trace ログを生成する Permission 設定 SD カードにファイルを作り、メッセージを書き込むために Permission を設定する必要がある。 でないと、 Permission Denied が発生してアプリが落ちる。 AndroidManifest.xml に以下を追記する。 09/19/11
  • 11. 2. Trace ログを生成する アプリを実行すると、ファイル?エクスプローラの sdcard フォルダに trace ログファイルが生成される。 ファイルエクスプローラは Eclipse の DDMS パースペクティブからファイル?エクスプローラービューで見れる。 09/19/11
  • 12. 2. Trace ログを生成する また、 startMethodTrace() 呼び出しと stopMethodTrace() の呼び出しが LogCat 上に表示される。 09/19/11
  • 13. 3. Trace ログを引っこ抜く SD カードに保存された trace ログファイルを引っこ抜く。 adb pull で trace ファイルを指定する。 09/19/11
  • 15. 1. Traceview 実行 tools にある traceview を実行する。 trace ログファイルを「絶対パス」で指定する。 なぜ相対パス指定できないのか不明 実行すると以下の画面が現れる。 上部分:タイムラインパネル 下部分:プロファイルパネル 09/19/11
  • 16. 2. タイムラインパネル Traceview の上部分はタイムラインパネルと呼ばれ、各スレッド毎にコールされたメソッドがグラフ上に表示される。 メソッドは時系列で並んでおり、コールされる順序やメソッドの使用頻度、実行に要した時間を見ることが可能。 以下の操作が ( マウスのみで ) 可能 クリック:そのメソッドがコールされている場所全てをアニメーションで表示?、プロファイルパネルの関連情報をソートする ドラック:任意の大きさに拡大可能。戻すときはダブルクリック 09/19/11
  • 17. 3. プロファイルパネル Traceview の舌部分はプロファイルパネルと呼ばれ、メソッドの実行時間に関するデータを見ることが可能 各項目をクリックするとメソッド内の詳細な統計が表示され、タイムラインパネルのどこに該当するか知らせてくれる。 09/19/11
  • 18. 3. プロファイルパネル 各項目は以下の通り 09/19/11 項目名 意味 name メソッド名 Inclusive そのメソッドとそのメソッドから呼ばれたメソッドの実行時間の合計 Incl% 最大経過時間に対する Inclusive タイムの割合 Exclusive そのメソッドの実行時間 Excl% 最大経過時間に対する Exclusive タイムの割合 Calls + Recur Calls/Total このメソッドのコール回数 + 再帰的にコールされた回数 Time/Call 平均タイム
  • 19. 4. 解析方法 Traceview ですべきことは実行時間を多く費やしている処理を発見し、最適化すべきメソッドを特定する事 Excl% を降順でソート->実際にメソッド実行に費やされた時間なので、他と比べて高い場合は最適化の対象 Excl% の値が高いメソッドを最適化してもパフォーマンスが改善されない場合->プログラム全体の作りが悪い。 Incl% を降順でソートし、他と比べて高い場合は最適化の対象。 Incl% は体感速度に直結する。 09/19/11
  • 20. 参考 URL Android Developers http://developer.android.com/intl/ja/index.html Android エミュレーターの仮想 SD カードを使う http://www.usefullcode.net/2010/12/androidsd.html Android1.6 以降 プロファイラ traceview の落とし穴 http://blog.livedoor.jp/sylc/archives/1478471.html Android TraceView 基本編 http://www.taosoftware.co.jp/blog/2009/11/android_traceview.html 09/19/11