指標是指擷取基準資訊的主要類型資訊。系統會將這些值以 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,如下圖所示。 如果您定義了多個指標,則所有指標都會合併到輸出內容。
StartupTimingMetric
StartupTimingMetric
會使用下列值擷取應用程式啟動時間指標:
timeToInitialDisplayMs
- 從系統接收啟動意圖到顯示第一個活動第一個畫面的時間。timeToFullDisplayMs
- 系統接收啟動意圖到應用程式報告完整的時間 (透過reportFullyDrawn
方法完成)。完成reportFullyDrawn()
呼叫後 (或包含) 第一個畫面算繪後,測量便會停止。這項測量可能無法在 Android 10 (API 層級 29) 及更低層級中使用。
如要進一步瞭解影響應用程式啟動時間的因素,請參閱應用程式啟動時間頁面。
FrameTimingMetric
FrameTimingMetric
會從基準畫面 (例如捲動或動畫) 擷取的畫面時間擷取資訊,並輸出下列值:
frameOverrunMs
- 特定畫面在指定期限內失效。 正數代表捨棄畫面的顯示時間,以及可見的資源浪費 k / 延遲,負數則代表訊框的轉譯速度比畫面快。僅適用於 Android 12 (API 層級 31) 以上版本。frameDurationCpuMs
:頁框在 CPU 上產生的時間 (UI Thread 和 RenderThread)。
測量結果的分佈依序為百分之50、90、95和99。
如要進一步瞭解如何找出及改善緩慢畫面,請參閱顯示速度緩慢一節。
TraceSectionMetric (實驗版)
TraceSectionMetric
會擷取符合所提供追蹤記錄的追蹤部分所花費的時間sectionName
和輸出內容分鐘、中位數和最高以毫秒為單位 追蹤區段是由函式呼叫 trace(sectionName){}
或 Trace.beginSection(sectionName)
和 Trace.endSection()
之間的程式碼 (或非同步變化版本) 定義。一律選取在評估期間擷取的追蹤記錄區段的第一個例項。