為應用程式進行基準測試

基準測試可用來檢查及監控應用程式效能。您可以定期執行基準測試,協助分析效能問題並進行相關偵錯,確保近期異動不會造成迴歸。

Android 提供 Macrobenchmark 和 Microbenchmark 這兩種基準測試程式庫和方法,可分析及測試不同的應用程式情況。

Macrobenchmark

Macrobenchmark 程式庫可測量規模較大的使用者互動,例如啟動作業、UI 操作和動畫。這個程式庫可讓您直接控制要測試的效能環境。藉由控制應用程式的編譯、啟動與停止作業,您可以直接評估應用程式實際啟動或捲動的情形。

針對基於測試所建構的測試應用程式,Macrobenchmark 程式庫會從外部插入事件並監控結果。因此,您編寫基準測試時,不需要直接呼叫應用程式程式碼,只要像使用者一樣在應用程式中瀏覽即可。

Microbenchmark

Microbenchmark 程式庫可讓您在迴圈中直接基準化應用程式程式碼。這個程式庫可測量用來評估最佳情況效能的 CPU 工作 (為及時 (JIT) 編譯作業暖機、快取磁碟存取內容),您可以透過內部迴圈或特定熱函式查看。程式庫只能測量可獨立直接呼叫的程式碼。

如果應用程式需要處理複雜的資料結構,或是會在應用程式執行期間多次呼叫需要大量運算的演算法,就可能適合進行基準測試。您也可以測量使用者介面的某些部分。舉例來說,您可以測量 RecyclerView 項目繫結的成本、加載版面配置花費的時間,或從效能角度瞭解 View 類別的版面配置和測量傳遞需求量。

不過,您無法評估基準化情況對整體使用者體驗的幫助如何。在某些情況下,對於卡頓或應用程式啟動時間等瓶頸,基準測試無法說明改善措施是否有效。因此,請務必先使用 Android 分析器辨識這些瓶頸。找到要調查和最佳化的程式碼後,基準測試迴圈就能快速簡單地重複執行,產生雜訊較少的結果,讓您專注改善一個方面。

Microbenchmark 程式庫只會回報應用程式的相關資訊,而不是整個系統的相關資訊。因此,這個程式庫最適合分析應用程式本身情況的效能,而不適合分析可能涉及整體系統問題的情況。

基準測試程式庫比較

Macrobenchmark Microbenchmark
功能 測量高階進入點或互動,例如啟動活動或捲動清單 測量個別功能
範圍 完整應用程式的程序外測試 CPU 工作的程序內測試
速度 中等疊代速度 (可能超過一分鐘) 快速疊代速度 (通常不到 10 秒)
追蹤 結果包含剖析追蹤記錄 可選用方法取樣和追蹤功能
最低 API 版本 23 14