擷取巨集基準指標

透過集合功能整理內容 你可以依據偏好儲存及分類內容。

指標是指擷取基準資訊的主要類型資訊。系統會將這些值以 List 的形式傳送至 measureRepeated 函式,讓您一次指定多個評估指標。基準至少需要一種指標才能運作。

下列程式碼片段會擷取畫面時間時間和自訂追蹤記錄區段的指標。

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 - 特定畫面在指定期限內失效。 正數代表捨棄畫面的顯示時間,以及可見的資源浪費 k / 延遲,負數則代表訊框的轉譯速度比畫面快。僅適用於 Android 12 (API 層級 31) 以上版本。
  • frameDurationCpuMs:頁框在 CPU 上產生的時間 (UI Thread 和 RenderThread)。

測量結果的分佈依序為百分之50、90、95和99。

如要進一步瞭解如何找出及改善緩慢畫面,請參閱顯示速度緩慢一節。

FrameTimingMetric 結果

TraceSectionMetric (實驗版)

TraceSectionMetric會擷取符合所提供追蹤記錄的追蹤部分所花費的時間sectionName和輸出內容分鐘中位數最高以毫秒為單位 追蹤區段是由函式呼叫 trace(sectionName){}Trace.beginSection(sectionName)Trace.endSection() 之間的程式碼 (或非同步變化版本) 定義。一律選取在評估期間擷取的追蹤記錄區段的第一個例項。

如要進一步瞭解追蹤功能,請參閱系統追蹤總覽定義自訂事件

TraceSectionMetric 結果