Macrobenchmark の指標をキャプチャする

コレクションでコンテンツを整理 必要に応じて、コンテンツの保存と分類を行います。

指標は、ベンチマークから抽出される主要な情報タイプです。指標は List として measureRepeated 関数に渡されます。つまり、一度に複数の測定指標を指定できます。ベンチマークを実行するには、少なくとも 1 つのタイプの指標が必要です。

次のスニペットは、フレーム時間指標とカスタム トレース セクション指標をキャプチャします。

Kotlin

benchmarkRule.measureRepeated(
    packageName = TARGET_PACKAGE,
    metrics = listOf(
        FrameTimingMetric(),
        TraceSectionMetric("RV CreateView"),
        TraceSectionMetric("RV OnBindView"),
    ),
    // ...
)

Java

benchmarkRule.measureRepeated(
    /* packageName */ TARGET_PACKAGE,
    /* metrics */ Arrays.asList(
        new StartupTimingMetric(),
        new TraceSectionMetric("RV CreateView"),
        new TraceSectionMetric("RV OnBindView"),
    ),
    /* iterations */ 5,
    // ...
);

ベンチマーク結果は、次の画像のように Android Studio に出力されます。複数の指標が定義されている場合は、出力の中ですべての指標が結合されます。

TraceSectionMetric と FrameTimingMetric の結果

StartupTimingMetric

StartupTimingMetric は、以下の値を使用してアプリの起動時間の指標をキャプチャします。

  • timeToInitialDisplayMs – システムが起動インテントを受け取ってから、デスティネーション アクティビティの最初のフレームをレンダリングするまでの時間。
  • timeToFullDisplayMs - システムが起動インテントを受け取ってから、アプリが reportFullyDrawn メソッドを使用して完全な描画を報告するまでの時間。測定は、reportFullyDrawn() の呼び出しを含む(または呼び出し後の)最初のフレームのレンダリングが完了した時点で停止します。この測定は、Android 10(API レベル 29)以前では利用できない場合があります。

アプリの起動時間に影響する要因について詳しくは、アプリの起動時間のページをご確認ください。

StartupTimingMetric の結果

FrameTimingMetric

FrameTimingMetric は、ベンチマークによって生成される、スクロールやアニメーションなどのフレームの時間情報をキャプチャして、以下の値を出力します。

  • frameOverrunMs – 特定のフレームが期限を超過した時間。正の数値はフレーム落ちや目に見えるジャンク / スタッターを示し、負の数値はフレームが期限よりどれだけ早く終了したかを示します。Android 12(API レベル 31)以上でのみ利用可能です。
  • frameDurationCpuMs – CPU 上の UI スレッドと RenderThread の両方でフレームが生成されるのにかかった時間。

これらの測定値は、50 パーセンタイル、90 パーセンタイル、95 パーセンタイル、99 パーセンタイルの分布で収集されます。

遅いフレームを特定して改善する方法については、遅いレンダリングをご覧ください。

FrameTimingMetric の結果

TraceSectionMetric(試験運用版)

TraceSectionMetric は、指定された sectionName と一致するトレース セクションにかかった時間をキャプチャし、最小値中央値最大値の時間をミリ秒単位で出力します。トレース セクションは、関数呼び出し trace(sectionName){} か、Trace.beginSection(sectionName)Trace.endSection()(またはこれらの非同期バリアント)の間のコードで定義されます。測定中にキャプチャされたトレース セクションの最初のインスタンスが常に選択されます。

トレースについて詳しくは、システム トレースの概要カスタム イベントを定義するをご覧ください。

TraceSectionMetric の結果

PowerMetric(試験運用版)

PowerMetric は、指定された categories のテスト期間中における電力またはエネルギーの変化を取得します。選択された各カテゴリは測定可能なサブコンポーネントに分類され、選択されていないカテゴリは「未選択」の指標に追加されます。指標は、アプリごとの消費量ではなく、システム全体の消費量を測定するものであり、現時点では Google Pixel 6 と Google Pixel 6 Pro のデバイスに限定されます。

  • power<category>Uw - このカテゴリでのテスト期間中における電力消費量。
  • energy<category>Uws - このカテゴリでのテスト期間中における時間単位あたりのエネルギー伝送量。

カテゴリには、CPU、DISPLAY、GPU、GPS、MEMORY、MACHINE_LEARNING、NETWORK、UNCATEGORIZED などがあります。

CPU などの一部のカテゴリでは、他のプロセスによる作業と実際のアプリによる作業を切り分けることが難しい可能性があります。不要なアプリやアカウントを削除するか制限することで、干渉を最小限に抑えるようにしてください。

PowerMetric の結果