プロファイルは、手動プロファイル収集と ProfilingManager
API という 2 つの主な方法で収集できます。
- 手動プロファイル収集では、ローカル デバイスで Perfetto を手動で実行してプロファイルを記録します。これは、Perfetto でシステム トレースを記録するで説明されているコマンドを使用するか、クイック設定タイルを使用して記録するで説明されているクイック設定タイルを使用して行うことができます。
ProfilingManager
を使用すると、アプリは本番環境でプロファイルを収集できます。
ProfilingManager
は、多くのユーザーからデータを収集して分析する場合や、まれな問題をデバッグする場合に使用することをおすすめします。ただし、再現しやすい問題の場合は、手動プロファイリングの方が適している可能性があります。
次の表に、プロファイルを記録する 2 つの方法の違いを示します。
ProfilingManager | 手動でのプロファイル収集 | |
---|---|---|
プロファイルのタイミング制御 | その他 | 一部を表示 |
プロファイル ソース | ローカル デバイスと一般ユーザー | ローカル デバイスのみ |
プロファイル出力 | 削除済み | 秘匿化されていない |
イベントベースのプロファイリング | はい | いいえ |
プロファイルのカスタマイズ性 | 一部を表示 | その他 |
スケーラビリティ | 高 | 低 |
以降のセクションでは、プロファイル記録方法の違いについて簡単に説明します。
プロファイルのタイミング制御
ProfilingManager
API を使用すると、タイミング プロファイルの初期化が難しい手動プロファイリングと比較して、アプリがプロファイルを開始または停止するタイミングをより細かく制御できます。ProfilingManager
を使用すると、予期しない動作のプロファイリングも簡単になります。動作をローカルで再現できない場合でも、プロファイルを収集できるためです。
プロファイル ソース
ProfilingManager
を使用すると、一般ユーザーからデータを収集して、パフォーマンスの問題を見つけて修正できます。一方、手動プロファイリングでは、自分のデバイスでのみ問題を再現できます。
プロファイル出力
ProfilingManager
と手動収集では、異なる種類のプロファイル出力が生成されます。
ProfilingManager
を指定すると、秘匿化されたトレースが生成されます。編集されたトレースには、アプリのプロセスに関する情報が表示されますが、システム上の他のアプリのデータは非表示になります。ProfilingManager
は、トレースを収集して編集してから返すため、他のアプリのデータを表示しないことでプライバシーを保護しながら、一般ユーザーからトレースを収集できます。プロファイルを手動で収集すると、編集されていないトレースが生成されます。システム トレースを手動で記録すると、出力にはシステムで実行されているすべてのプロセスが含まれることがあります。これらの編集されていないトレースは、デバッグ用のより完全なデータを提供しますが、プライバシー上の懸念からローカルでのみアクセスできます。
イベントベースのプロファイリング
ProfilingManager
は、アプリケーション応答なし(ANR)エラーやアプリの起動など、特定のイベントが発生したときにプロファイルを収集することもできます。ProfilingManager
は、イベントベースの収集のプロファイルの開始と停止を処理します。
プロファイルのカスタマイズ性
手動プロファイリングでは最も多くのカスタマイズが可能ですが、ProfilingManager
ではカスタマイズ オプションが少なくなります。
スケーラビリティ
ProfilingManager
は、アプリ デベロッパーが一般ユーザーのプロファイルを記録できる唯一のオプションであるため、トレースをスケーリングする最善の方法です。ProfilingManager
を使用すると、大規模なトレースの収集と分析を設定できます。手動プロファイリングはローカルでの使用に限定されます。