Android メソッドの処理にかかった時間を計測する
アプリの動きを少しでも早くしたい…
すべてのアプリ開発者の願いだと思います。
もちろん、画面を見て
「なんか遅いなー」
とか思う時もありますが、ちゃんと何秒なのか、何ミリ秒なのか、原因はどこにあるのか?わからないとよい改善もできませんよね!
で、
Debug.startMethodTracing();
とやればトレースログというものを見ることができ、それらがわかるのですが、いくつか私がはまってしまったことがあるので、それを書いておきます。
計測したいメソッドの始まりに
Debug.startMethodTracing();
と書いて、計測したい終わりに
Debug.stopMethodTracing();
と書きます。
//例 Debug.startMethodTracing("smart"); super.onResume(); Debug.stopMethodTracing();
上記の例だと、smart.traceというファイルがスマホ上にできます。
で、できる場所なんですが、いろんな解説のサイトやオフィシャルサイトだと
/sdcard/smart.trace
とできると書いてあります。
SDカード?と思って、microSDカードの中にできてるんだと思ってしまいました。
あれ?ない?なんで??
ずっと試行錯誤しちゃいましたが、これ、microSDカードのなかではなく、デフォルトはスマホ内部のストレージなんですね。
手元のGalaxyS3aだと
/storage/sdcard0
というディレクトリに入ってました。
これはスマホにより違うので、ファイルマネージャーなどのアプリで各自確認してみたほうがよいでしょう。
で、無事ファイルができていたことを確認できたので、まずはEclipseの入っているWindowsにsmart.traceを移します。
スマホからPCにコピーをするには、adbで下記のように実行します。
例 スマホからC:\Usersにコピー
2735 KB/…sと言うのは、実行した後に表示されます。
で、このC:\Usersにあるこのトレースログファイルをどうやって見るか、というと下記のようにやります。
すると、下記のように反応して、ほうっておくとDDMSのwindowが立ち上がります。
立ちあがったトレースビューの画面です。