パフォーマンス テスト用の環境をセットアップする

短期間のデバイスのアクティビティを記録し、アプリの起動期間のトレースを収集することで、潜在的なボトルネックを特定し、アプリの全体的なパフォーマンスを改善できます。このページでは、パフォーマンス テスト用の環境の設定方法について説明します。

Macrobenchmark ライブラリを使用する

Macrobenchmark ライブラリは、起動、UI の操作、アニメーションなど、上位レベルのエンドユーザー インタラクションを測定します。このライブラリでは、テスト対象のパフォーマンス環境を直接制御できます。そのため、アプリのコンパイル、起動、停止を制御することにより、アプリの正確な起動時間を直接測定できます。また、ノイズとテスト実行間の差を最小限に抑えることもできます。

ミッドレンジのデバイスを使用して潜在的なパフォーマンスの問題を特定する

対象の各デバイスタイプでパフォーマンスをテストします。高速なコンポーネントを搭載したハイエンド デバイスでは、以前のデバイス、低速のデバイス、低 RAM デバイスに関するパフォーマンスの問題が隠れてしまう可能性があります。ローエンド デバイスでは、データの読み込みやコードの実行に時間がかかるため、ボトルネックを特定しやすくなります。通常、ローエンド デバイスでパフォーマンスを最適化することは、ハイエンド デバイスの最適化にもメリットがあります。

ノイズを低減する

  • ネットワーク: 高速で安定したインターネット Wi-Fi でアプリ(またはプロセス)をテストします。アプリの起動中にネットワーク リクエストが行われる場合、そこでばらつきが出る可能性があります。
  • RAM 使用量: アプリの起動パフォーマンスのテスト中に、デバイスのバックグラウンドで他のアプリを実行しないでください。
  • バッテリー: ハードウェア独自の低電力パフォーマンス スロットリングが行われないように、必ず十分に充電された状態にします。

リリースビルドでテストする

パフォーマンスのテストにはリリースビルドを使用します。デバッグビルドではコンパイル時の最適化が行われず、パフォーマンスに大きな影響があるため、パフォーマンス デバッグには適していません

クラスとオペレーション名が識別できるように難読化されていないリリースビルドを使用することは問題ありません。具体的には、proguard ファイルで -dontobfuscate を使用し、minify(R8)を有効にして難読化を無効にすることをおすすめします。ビルドの難読化を無効にすると、レイアウト、アセット、リソースを識別しやすくなります。

必ず、デバッグ可能ビルド以外のビルドからカスタム イベントを識別できるように、マニフェストに profileable フラグを追加します。このフラグは Android 10(API レベル 29)以降で使用できます。

アプリのオペレーションにカスタム トレースを追加する

アプリ内にカスタム トレースを追加すると、そのアプリによって実行されるオペレーションが他のライブラリと比較して識別しやすくなります。こうすることで、そのアプリが何を行っているかについての状況を常により詳しく把握できます。