設定檔引導最佳化的相關支援已在 AGDE 22.2.71 版中推出。
找出 PGO 設定
透過「Solution Explorer」開啟專案設定。
圖 1:Visual Studio 的「Solution Explorer」視窗。
確認您的平台已設為採用 Android 設定 (例如 Android-arm64-v8a)。
在左側面板中,依序選取「Configuration Properties」>「General」。找出名為「PGO」的屬性群組。
圖 2:「Project Properties」對話方塊。
在專案中啟用 PGO 檢測版本
在專案中新增名為 Instrumented 的新設定。這是以您在開發期間使用的設定為依據,也就是傳統的最佳化版本 (只要您保留編譯器最佳化設定,還是可以啟用其他偵錯功能)。
在「Property Pages」對話方塊中,按一下「Configuration Manager...」。
圖 3:「Configuration Manager」對話方塊。
在「Configuration Manager」對話方塊中,選取「Active solution configuration」下拉式選單,然後選擇「<New...>」。
圖 4:建立新的建構設定。
接下來...請建立新的 PGO 檢測設定。
圖 5:「New Solution Configuration」對話方塊。
如要啟用 PGO 檢測模式的建構功能,以便產生遊戲設定檔,請從「Profile-Guided Optimization Mode」設定的選項清單中,選取「Instrumented」。
圖 6:醒目顯示「PGO」設定的「Project Properties」對話方塊。
在「Profile Guided Optimization Profiles」設定中輸入資料夾路徑,指出要在 Android 裝置上將原始輸出設定檔資料檔案寫入哪個資料夾。一般來說,這個值應該像是 /data/data/<package
name>/cache/
,其中 <package name>
是 APK 的完整套件名稱,例如 com.google.sample.tunnel。
如要進一步瞭解這項功能的運作方式,請參閱 Clang 說明文件。
將 PGO 檢測的設定檔資料寫入您的裝置
處理程序結束後,PGO 檢測系統通常會將 PGO 資料寫入裝置。在 Android 中,應用程式不會結束,所以會一律終止。這表示系統絕不會觸發預設的「寫入磁碟」功能,因此需要您的應用程式手動寫入 PGO 資料。
應用程式應明確呼叫 __llvm_profile_write_file
以寫入設定檔資料。只有在建構 PGO 檢測版本時,才能使用這個符號。為簡化這項作業,我們建議您在宣告 __llvm_profile_write_file
時使用以下模式。
#ifdef PGO_INSTRUMENT
extern "C" int __llvm_profile_write_file(void);
#else
extern "C" int __llvm_profile_write_file(void) { return 0; }
#endif
呼叫此函式會將設定檔資料寫入您稍早指定的資料夾。
執行設定檔
如要產生設定檔,請在目標裝置上執行以 PGO 檢測功能建構的 APK。您根據自身需求執行程式碼,並觸發了對 __llvm_profile_write_file
函式的呼叫之後,應用程式會將設定檔資料寫入儲存空間。
此時,請將設定檔複製回裝置上,以供編譯器使用。
準備設定檔資料以供編譯器使用
單獨使用時,Android NDK 中的 Clang/LLVM 會隨附指令列工具 llvm-profdata
,可用於準備設定檔資料檔案,供編譯器在版本進行設定檔引導最佳化時使用。
AGDE 會合併您新增至專案的所有設定檔資料檔案,並在專案屬性頁面中的「Profile-Guided Optimization Mode」設定設為「Optimized」時,使用這些檔案來自動執行這個步驟。
在啟用設定檔引導最佳化功能的情況下建立專案
由於您已擷取設定檔並將其新增至專案中,因此編譯器可以利用這些資料微調版本的最佳化功能。
您可以為 PGO 最佳化版本建立新的專案設定,這麼一來,您就只有在必要時才會透過這個模式進行建構。
圖 7:建立新的 PGO 最佳化建構設定。
將專案屬性頁面中的「Profile-Guided Optimization Mode」設定設為「Optimized」。
圖 8:將 PGO 最佳化模式設為「Optimized」。
從裝置中複製檔案,然後將檔案「新增」至 Solution Explorer 中的專案。您下次建構 PGO 最佳化設定時,編譯器會擷取這些設定檔資料檔案,用來調整編譯器最佳化程式碼的方式。
您可以使用 ADB 或 Android Device Explorer,將設定檔資料檔案從裝置複製到專案中。
在 AGDE 以外使用設定檔引導最佳化功能
如果您使用的是 AGDE 不支援的建構系統,您可能需要直接編輯版本。Clang 說明文件中列有必要的切換鈕:-fprofile-generate
和 -fprofile-use
。
如果您的遊戲採用中介軟體引擎,請參閱相關引擎的說明文件,瞭解如何啟用 PGO (如果支援的話)。