自動回饋導向優化(12 或更高)

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