基準設定檔可避免常見使用者歷程的解譯器和即時 (JIT) 編譯步驟,因此程式碼執行速度最多可提升 30%。基準設定檔可讓您選擇要最佳化的使用者歷程,並協助改善應用程式啟動作業、減少資源浪費等,進而提升業務指標,例如使用者留存率和評分。進一步瞭解基準設定檔。
Android 日曆團隊實作基準設定檔後,發現應用程式啟動時間縮短了約 20%,緩慢或凍結的影格減少了約 50%。以下說明他們如何從頭到尾達成這些效能提升目標,包括決定使用基準設定檔的原因,以及如何評估影響。
雲端設定檔與基準設定檔
Android 日曆團隊已使用雲端設定檔,這是另一種設定檔引導最佳化 (PGO) 方法,可根據使用者與應用程式的實際互動進行最佳化。雲端設定檔和基準設定檔的比較如下:
| 設定檔類型 | 設定 | 包含使用者歷程 | 使用者人數 | 實際影響 | 支援的 Android 版本 |
|---|---|---|---|---|---|
雲端設定檔 |
預設為啟用 |
根據實際使用者資料自動選擇 |
大 |
幾天內 |
Android 9 以上版本 (API 層級 28) |
基準設定檔 |
由你設定 |
由你選擇 |
所有尺寸 |
立即 |
Android 7 (API 級別 24) 以上版本 |
Android 日曆團隊決定在程式碼集新增基準設定檔,主要原因之一是他們要改用更快的每週發布週期。雖然雲端設定檔可大幅提升效能,但由於需要彙整實際使用者資料,因此應用程式發布後 1 到 2 天,雲端設定檔的影響力才會達到高峰。以基準設定檔補充雲端設定檔,可讓使用者在下一個應用程式版本推出前,有更多時間體驗效能提升的最高幅度。
此外,Android 日曆團隊也希望能夠選擇要將哪些關鍵使用者歷程 (CUJ) 納入設定檔,而基準設定檔就能做到這一點。
一般而言,我們建議您除了預設啟用的雲端設定檔外,也使用基準設定檔,以獲得最佳效能。
包含使用者歷程
Android Calendar 團隊選擇在基準設定檔中加入兩個 CUJ:
- 在行程檢視畫面中開啟應用程式:這是預設檢視畫面,因此請務必針對首次使用應用程式或未變更預設設定的使用者進行最佳化。
- 以月檢視開啟應用程式:根據使用者資料,這是許多使用者選擇的檢視畫面。如要追蹤使用者使用應用程式的方式,可以運用 Firebase 等工具。
一般來說,您應加入對業務有利的 CUJ (如適用) 和最常見的 CUJ。如要進一步瞭解如何選擇要最佳化的 CUJ,請參閱「要納入哪些 CUJ」一文。
實作
Android Calendar 團隊使用 Jetpack Macrobenchmark 程式庫的內部包裝函式,產生基準設定檔,方便與內部工具整合,並提高一般擴充性。
以下是開啟排程檢視畫面中應用程式的 Macrobenchmark 測試設定:
@Test
fun generateProfile() =
baselineProfileRule.collect(PACKAGE_NAME, includeInStartupProfile = true) {
uiAutomator {
startApp(packageName = PACKAGE_NAME)
// Verify pre-existing recurring events and tasks are shown.
// onElement waits for the element by default
onElement { textAsString() == "Recurring event" }
onElement { textAsString() == "Recurring task" }
// Open drawer and verify selected view.
onElement { contentDescriptionAsString() == "Show Calendar List and Settings drawer" }.click()
onElement { contentDescriptionAsString() == "Schedule view, Selected" }
}
}
請替換下列項目:
- PACKAGE_NAME:您要產生基準設定檔的應用程式套件名稱。
使用受控發布功能評估影響
由於基準設定檔與隨附的 APK 緊密結合,且會在應用程式執行前併入,因此無法執行標準 A/B 實驗來瞭解其影響。不過,Android 日曆團隊使用控管發布功能,準確評估了影響。這項功能基本上只會向部分使用者發布新版應用程式,並與使用類似先前版本的使用者進行比較。
導入基準設定檔後,他們發現多個領域的成效立即大幅提升。這些統計資料是從各種裝置和所有使用者彙整而來,其中以從行程表和月檢視畫面開始的使用者最能感受到效用,但其他使用者也能受益,因為系統會最佳化共用程序,例如從資料庫載入日曆資料。
- 互動式應用程式啟動 (最常見的情況) 延遲時間中位數從 775 毫秒降至 644 毫秒 (17%)
- 冷啟動延遲時間中位數從 1,058 毫秒降至 901 毫秒 (降幅 15%)
- 暖啟動延遲時間中位數從 453 毫秒降至 378 毫秒 (17%)
- 在時間表和月檢視畫面中,中位數不穩定的畫面更新率降低了 42% 至 60%
請注意,如果同時使用雲端設定檔和基準設定檔,您可能會發現改善幅度在第一週稍有下降,這是因為系統正在產生雲端設定檔。不過,除了您已採取的其他最佳化措施外,使用基準設定檔仍應能大幅提升效能。
如要進一步瞭解這些工具和功能,請參閱下列資源: