個案研究

Monzo 透過簡單的 R8 更新,將效能指標提升了 35%

2 分鐘閱讀
Ben Weiss
開發人員關係工程師

Monzo 是英國數位銀行,目前有 1,500 萬名客戶,且人數持續增加中。隨著應用程式規模擴大,工程團隊發現應用程式啟動時間是需要改善的關鍵領域,但擔心這會需要大幅變更程式碼集。

Monzo 完整啟用 R8 最佳化功能後,應用程式無回應 (ANR) 率大幅降低 35%。這項簡單的變更證明,要進行有效的最佳化,不一定需要複雜的工程作業。

透過 R8 完整模式大幅提升成效

Monzo 發現 R8 完整模式是值得一試的簡單修正方式,結果確實奏效,全面提升了效能:

  • 啟動可靠性:冷啟動改善 30%,暖啟動改善 24%,熱啟動改善 14%。
  • 啟動速度:P50 啟動時間縮短 11%,P90 啟動時間縮短 12%。
  • 效率:整體應用程式大小縮減了 9%。
  • 穩定性:ANR 減少 35%。
AANDDM_Monzo_Quote-1.png
large_AANDDM_Monzo_Quote-2.png

只要進行一項變更,就能啟用最佳化功能

許多 Android 應用程式使用過時的預設設定檔,導致 R8 最佳化工具的大部分功能都無法使用。Monzo 為提升效能所做的主要變更,就是將 proguard-android.txt 預設檔案替換為 proguard-android-optimize.txt。這項變更會移除 -dontoptimize 指令,讓 R8 正常運作。

  buildTypes {
  release {
    isMinifyEnabled = true
    isShrinkResources = true
    proguardFiles(
      getDefaultProguardFile("proguard-android-optimize.txt"),
    )
  }
}

變更後,建議您查看 Keep 設定檔。這些檔案會告知 R8 要保留哪些程式碼 (通常是因為這些程式碼是動態呼叫或由外部程式庫呼叫)。清除不必要的 Keep 規則,R8 就能發揮更大效用。

使用基準設定檔提升捲動效能

為進一步提升使用者體驗,Monzo 導入了基準設定檔,特別是針對主要動態消息的捲動和算繪效能。這項策略可確保最常見的使用者歷程 (開啟應用程式和捲動動態消息) 獲得全面最佳化。對算繪的影響相當顯著:P90 捲動效能提升 71%,P95 捲動效能則提升 87%。現在捲動應用程式時,比以往更加順暢。

Monzo 在發布程序中加入這項功能,確保這些改善項目能長期維持。Neumayer 說明:「我們會在每個工作日觸發基準設定檔產生作業 (在執行夜間建構作業之前),並在完成後提交最新變更。」

掌握 Modern Android Development 的最新資訊

Monzo 的經驗顯示,只要採用最新的 Android 建構工具建議,就能實現許多可能。舊版應用程式通常難以處理複雜的反射用法,但 Monzo 妥善記錄 Keep 規則,因此順利完成轉換。「我們會一律新增註解,說明為何要保留規則,這樣我們就能知道何時可以安全地移除規則。」Neumayer 說道。

Neumayer 給其他團隊的建議是:定期根據現行標準檢查做法:「請查看 Google 針對應用程式效能提供的最新建議,並確認您是否遵循所有最新建議。」

如要開始使用 R8 並瞭解詳情,請前往 https://d.android.com/r8

撰寫者:

繼續閱讀