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。
為您推薦
- 注意:系統會在 JavaScript 關閉時顯示連結文字
- 為應用程式進行基準測試
- 建立基準設定檔 {:#create-profile-rules}
- JankStats 程式庫