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 設定檔自動產生最常執行的函式。