Android 建置系統在 Android 12 中引入,支援使用自動回饋定向優化 (AutoFDO)優化具有藍圖建置規則的原生 Android 模組。 AutoFDO 是一種基於採樣的最佳化技術。 AutoFDO 擷取系統二進位檔案的執行時間行為,使編譯器能夠進行更好的效能最佳化,同時減少二進位檔案的大小。 AutoFDO 支援從 AArch32 和 AArch64 架構收集數據,儘管設定檔可以跨架構使用。
AutoFDO 是基於儀器的設定檔引導最佳化 (PGO) 的後繼者。
與其他基於儀器的配置檔案相比,AutoFDO 具有以下額外優勢:
不引人注目的資料收集:可以從開發或使用者裝置收集 AutoFDO 設定文件,無需對建置規則進行任何修改。
真實世界使用情況表示:AutoFDO 表示真實世界使用行為,假設設定檔是從使用者裝置收集的,而偵測 PGO 僅代表合成收集工作負載。創建完全符合現實世界使用情況的收集工作負載通常並不簡單。
AOSP 隨附 AutoFDO 設定文件,適用於大多數性能關鍵型專案。這些設定檔是從手機和平板電腦設備收集的,代表了它們的一般使用模式。設定檔位於toolchain/pgo-profiles/sampling
下。 AFDO 在 AOSP 上預設為啟用。
為藍圖建置規則啟用 AutoFDO
若要為藍圖建置規則啟用 AutoFDO,請將afdo: true
附加到共用程式庫或二進位規則。
收集個人資料
AOSP 提供的預先捆綁設定檔不支援以下特定場景:
- 包含其他 AutoFDO 項目
- 存在本地修改的程式碼
- 與您的系統相關的獨特使用模式
如果您遇到其中一種情況,則必須直接從開發或使用者裝置收集設定檔。
如需如何準備 ARM 裝置以收集 AutoFDO 設定檔的詳細說明,請參閱收集 AutoFDO 的 ETM 資料。
有關如何啟用自動後台設定檔收集、處理和上傳的信息,請參閱Profcollect 。
分析 AutoFDO 設定檔
Android 使用標準 LLVM AutoFDO 設定檔。可以使用 LLVM 的llvm-profdata
工具讀取 AFDO 設定檔。 afdo_summary.sh
腳本 ( toolchain/pgo-profiles/scripts/afdo_summary.sh
) 根據 AutoFDO 設定檔自動產生最常執行的函數。