はじめに
Perfettoを用いてシステムトレースするには、(方法によっては)計測用のコマンドを作成して、実行結果を持ってきてGUI上で確認するなど、少し手間がかかる場合があります。
なので本記事では、Perfettoを用いて(自分が試した中で)最も短時間で計測できる方法を紹介します。(Android StudioのProfiler使えばもっと速いととかはなし 笑)
Perfettoとは?
Perfettoは、Androidデバイス内のシステムトレースをするツールのことです。
システムトレースとは、例えばCPUやメモリの使用率、各プロセスの情報などを記録することを言います。
以前に、このPerfettoを用いてZOZOTOWNアプリのボトルネックを特定・改善した話を書きました。
上記の記事では、Perfettoでどのようにボトルネックを特定し、どのように改善したかを書いているので、実用的な使い方を知りたい方は参考になるかと思います。
Perfettoでの計測方法
公式では下記の4つの計測方法が紹介されています。
- ヘルパースクリプトを使用する方法
- Androidデバイス内の
/system/bin/perfetto
を使用する方法 - Perfetto UIを使用する方法
- Androidデバイス内のSystem Tracing Appを使用する方法
どれが一番速いか?
1の「ヘルパースクリプトを使用する方法」がもっとも速く計測ができると思います。 (公式でも推奨されています。)
2,4はトレース結果のファイルをデバイスからPCに、移動させ、Perfetto UIなどでOPENする手間がかかります。
(ちなみに、2についてはAndroid Pより古いAndroid端末にはコマンドが存在しません)
3は、トレース結果のファイルをGUI上でOPENする必要はありません。しかし毎回画面をぽちぽちしてトレース用の設定をしなければならないことに加えて、ときどきトレースが始まらないなどの問題があります。
1はトレース用の設定を与えたスクリプトを実行後、自動でブラウザが開きトレース結果を確認することができます。
手順
レイアウト生成処理のパフォーマンス計測を行う方法は下記の通りです。(Macを想定しています)
# OS9 or OS10の非Pixel端末の場合
$ adb shell setprop persist.traced.enable 1
# ヘルパースクリプトのダウンロード
$ curl -O https://raw.githubusercontent.com/google/perfetto/master/tools/record_android_trace
$ chmod u+x record_android_trace
# トレース実行
$ ./record_android_trace -o result view
結果
自動でPerfetto UIが開き、トレース結果が表示されます!
おわりに
Perfettoを用いて、最も短時間でパフォーマンス計測できる方法を紹介しました。
最近では、Android StudioのProfilerに機能が充実してきたので、その機能使うともっと速いかもしれないです!