自動回應導向最佳化 (12 以上)

Android 12 推出的 Android 建構系統,可使用自動回饋導向最佳化 (AutoFDO) 技術,針對具有設計圖建構規則的原生 Android 模組進行最佳化。AutoFDO 是一種以取樣為基礎的最佳化技巧。AutoFDO 擷取系統二進位檔的執行階段行為,讓編譯器能夠改善效能最佳化作業,同時減少二進位檔的大小。Android 支援從 X86、X86_64、ARM 和 ARM64 裝置收集設定檔,但這些設定檔可跨架構使用。

AutoFDO 是檢測式設定檔引導最佳化 (PGO) 的後續版本。

與其他以檢測為基礎的設定檔相比,AutoFDO 具有以下額外優點:

  • 不干擾的資料收集:AutoFDO 設定檔可從開發或使用者裝置收集,無須修改建構規則。

  • 實際使用表示法:AutoFDO 代表現實生活中的使用行為 (假設設定檔是從使用者裝置收集而來),而檢測 PGO 僅代表綜合收集工作負載。一般來說,要建立與實際使用情境完全相符的收集工作負載並不容易。

AOSP 會為大部分效能至關重要的專案提供 AutoFDO 設定檔。這些設定檔是從手機和平板電腦裝置收集而來,代表了使用者的一般使用模式。設定檔位於 toolchain/pgo-profiles/sampling 底下。Android 開放原始碼計畫預設會啟用 AFDO。

為藍圖建構規則啟用 AutoFDO

如要為藍圖建構規則啟用 AutoFDO,請將 afdo: true 附加至共用程式庫或二進位規則。

收集設定檔

Android 開放原始碼計畫提供的預先封裝設定檔不支援以下特定情況:

  • 納入其他 AutoFDO 專案
  • 是否有本機修改的程式碼
  • 與系統相關的獨特使用模式

如果符合上述任一情況,您必須直接從開發人員或使用者的裝置收集設定檔。

如需詳細的操作說明,請參閱「收集 AutoFDO 的 ETM 資料」一文,瞭解如何準備 ARM 裝置以便收集 AutoFDO 設定檔。

如要進一步瞭解如何啟用自動背景剖析資料收集、處理和上傳功能,請參閱「Profcollect」。

分析 AutoFDO 設定檔

Android 使用標準 LLVM AutoFDO 設定檔。您可以使用 LLVM 的 llvm-profdata 工具讀取 AFDO 設定檔。afdo_summary.sh 指令碼 (toolchain/pgo-profiles/scripts/afdo_summary.sh) 會根據 AutoFDO 設定檔自動產生最常執行的函式。