英雄基準

英雄基準是一組基準,涵蓋高階應用程式使用者歷程,例如應用程式啟動或在開放原始碼 Pokedex 應用程式中捲動。

  • 啟動英雄基準:追蹤從開啟應用程式到顯示內容的時間。
  • 捲動英雄基準:評估含有圖片的延遲格線捲動效能。

測試設定

  • 應用程式選取:我們使用開放原始碼的 Pokedex 應用程式進行這些測試,比較其以 View 為基礎以 Compose 為基礎的版本。這個應用程式是為了呈現真實情境而選用,並非由 Compose 團隊開發。
  • 硬體設定:我們在搭載 Android 12 (API 31) 的 Pixel 3a 上執行基準測試,並鎖定 CPU 和 GPU。這部裝置會做為英雄基準的標準效能基準。
  • 建構設定:基準測試使用在發布模式下建構的應用程式,並啟用 R8。應用程式會完全預先編譯,減少因即時 (JIT) 編譯而導致的不穩定性。
  • 結果選取:為確保最差情況分析,基準測試結果已排除極端離群值和不具代表性的雜訊。然後選取上限成效資料的中間值,建立基準

新創公司英雄基準

我們使用 PokedexStartupBenchmark 測量啟動時間。PokedexStartupBenchmark 會測量 Pokedex 應用程式顯示給使用者的時間。

應用程式啟動可能有三種狀態:冷啟動、暖啟動或熱啟動。每種狀態都會影響顯示應用程式所需的時間長度。冷啟動是指應用程式從頭開始啟動。在本基準中,我們會評估應用程式在冷啟動狀態下的啟動效能。建議您一律以冷啟動為假設狀態來進行應用程式最佳化。這麼做也可以改善暖啟動和熱啟動的效能。

我們用來評估應用程式啟動時間的指標是初始顯示時間完整顯示時間

PokedexStartupBenchmark

初始顯示時間

初始顯示時間 (TTID) 可測量應用程式需要多久時間才能產生第一個影格,包括在冷啟動期間執行初始化、在冷/暖啟動期間建立活動,以及顯示第一個影格。

PokedexStartupBenchmark 中,Compose 1.11 的 TTID 冷啟動速度比 Views 慢 2.5%。

Compose 1.11 的初始顯示時間比 View 慢 2.5%
圖 1: 比較 Compose 1.11 與 Views 的 TTID。

完整顯示時間

完整顯示時間 (TTFD) 是指應用程式進入可互動狀態所需的時間。這表示所有資料都已載入並繪製完成。如要進一步瞭解完整顯示時間,請參閱「應用程式啟動時間」。

PokedexStartupBenchmark 中,Compose 1.11 的 TTFD 冷啟動速度比 Views 慢 13.0%。

就 TTFD 而言,Compose 1.11 比 Views 慢 13.0%
圖 2: Compose 1.11 與 View 的 TTFD 比較。

捲動瀏覽英雄基準

我們使用 PokedexScrollBenchmark 測量捲動效能。 這項測試會測量含有圖片的延遲格線,在 Pokedex 應用程式畫面中的捲動效能。在這項基準測試中,整個畫面會捲動並快速滑動多次,且會載入新項目。捲動效能是以卡頓率來評估。

卡頓率

Android 裝置的算繪速度最高可達每秒 60 或 120 個影格 (FPS)。也就是說,系統必須在嚴格的期限內 (例如 60 FPS 的 16.6 毫秒) 產生影格。如果應用程式執行工作耗時過長,可能會導致明顯的頓挫感,也就是所謂的卡頓。

PokedexScrollBenchmark 中,自 Compose 1.9.0 版起,Compose 和 Views 的效能均為 0.21% 卡頓。以絕對值來說,每 485 個影格中就有 1 個影格不穩定。

這些基準顯示,Compose 1.9 以上版本在捲動時的卡頓效能與 Views 相同。

自 Compose 1.9.0 起,Compose 和 View 的卡頓率相同
自 Compose 1.9.0 起,Compose 和 Views 的卡頓率相同。

執行英雄基準測試

如要驗證效能結果並在本機執行基準測試,請按照下列步驟操作:

  1. 請按照 AndroidX 指南查看原始碼。
  2. 請按照 Hero Benchmarks 原始碼中的指示操作。

您可以在任何支援的裝置上執行這些基準測試,例如要用於最佳化應用程式的特定裝置。不過,如要驗證官方結果,請使用相同的硬體設定