Microbenchmark

Jetpack Microbenchmark 程式庫可讓您在 Android Studio 中,為 Android 原生程式碼 (Kotlin 或 Java) 進行基準測試。這個程式庫可以處理暖機程序、評估程式碼效能和分配次數,並將基準測試結果輸出至 Android Studio 主控台和包含更多測試詳情的 JSON 檔案

建議您先分析程式碼再編寫基準測試。這麼做可幫助您找出會耗用較多資源且值得最佳化的作業,也可以藉由顯示作業執行期間的活動,瞭解作業緩慢的原因。例如在低優先順序的執行緒上執行、因存取磁碟而進入休眠狀態,或意外呼叫會耗用大量資源的函式 (例如點陣圖解碼)。

Microbenchmark 最適合用於應用程式中多次執行的 CPU 作業,也就是所謂的「熱程式碼路徑」。典型示例包括捲動畫面一次會顯示一個項目的 RecyclerView、資料轉換或處理,以及其他會重複使用的程式碼片段。

使用 Microbenchmark 程式庫來評估其他類型的程式碼。由於基準測試會以迴圈方式執行,如果是不常執行的程式碼,或多次呼叫時會以不同方式執行的程式碼,都可能不適合進行基準測試。

如要瞭解如何在持續整合 (CI) 環境中使用程式庫,請參閱「在持續整合中執行基準測試」。

避免測量快取

請盡量避免只評估快取。舉例來說,自訂資料檢視的版面配置基準只能測量版面配置快取的成效。為避免這種情況,您可以在每個迴圈中傳遞不同的版面配置參數。在其他情況下 (例如評估檔案系統效能時),由於作業系統會以迴圈方式快取檔案系統,因此可能難以評估。

取得一致的基準

行動裝置上的時鐘功能會將動態狀態從高狀態 (為了確保效能) 變更為低狀態 (為了節省電力,或是在裝置過熱時)。這些不同的時鐘可能會造成基準數相差甚遠,因此程式庫會提供解決此問題的方法。

鎖定時鐘 (必須啟用已解鎖裝置)

鎖定時鐘是取得穩定效能的最佳方式,可確保不會因時鐘頻率過高而導致裝置過熱,也不會因基準測試未充分運用 CPU,導致頻率過低。透過 Gradle 工作 (gradlew lockClocks) 套用,或在 CI 中手動套用。雖然這是有助於確保穩定效能的最佳做法,不過由於需要取得 Root 權限的 Android 裝置,因此不支援大多數裝置。

永續效能模式

Window.setSustainedPerformanceMode() 是裝置支援的功能,可讓應用程式選擇較低的 CPU 頻率上限。當 Microbenchmark 程式庫在支援的裝置上執行時,它會使用此 API 的組合,並啟動本身的活動,避免執行過熱保護偵測功能,進而取得穩定的結果。

根據預設,這項功能是由 Android Gradle 外掛程式設定的 testInstrumentationRunner 啟用。如果您想使用自訂執行元件,則可將 AndroidBenchmarkRunner 設為子類別,並做為 testInstrumentationRunner 使用。

執行器會啟動不透明的全螢幕活動,確保基準可在前景執行,且沒有其他應用程式繪圖。

自動暫停執行

如果您並未使用時鐘鎖定或持續效能模式,程式庫會執行過熱保護偵測功能。啟用這項功能後,系統會定期執行內部基準測試,以判斷裝置溫度是否達到會降低 CPU 效能的程度。偵測到 CPU 效能降低時,程式庫會暫停執行以讓裝置降溫,然後重試當下的基準測試。

範例

請查看 GitHub 存放區中的以下範例:

其他資源

提供意見

如要在使用基準化分析時回報問題或提交功能要求,請參閱公開版 Issue Tracker