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
附加至已共用項目
程式庫或二進位規則
收集設定檔
AOSP 提供的預先內含設定檔不支援以下特定情況:
- 加入其他 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 設定檔自動產生執行頻率最高的函式。