使用 C++ 效能分析器
要優化 Godot 的效能,首先要知道該優化什麼。這時,效能分析器就是非常有用的工具。
備註
編輯器內建有 GDScript 效能分析器,但如果 GDScript 效能分析器不夠精確,或者分析器本身有 bug 導致資訊遺漏,此時可以考慮改用 C++ 效能分析器。
推薦的效能分析器
VerySleepy (僅限 Windows)
HotSpot (僅限 Linux)
Xcode Instruments (僅限 macOS)
這些效能分析器也許不是最強大或最靈活的選擇,但它們獨立運作、功能單純,因此上手更容易。
設定 Godot
若要取得有用的效能分析資訊,務必要 使用包含偵錯符號的 Godot 執行檔。官方釋出的二進位檔並未包含偵錯符號,因為這會大幅增加下載檔案的大小。
若想獲得最貼近生產環境(但又有除錯符號)的效能分析資料,建議用 production=yes debug_symbols=yes 的 SCons 選項編譯執行檔。
你也可以用較少優化的建構(比如 target=template_debug 且未啟用 LTO)來進行效能分析,但這樣得出的結果會和實際運作環境有些偏差。
警告
請勿 在編譯完成後使用 strip 指令移除偵錯符號,否則執行效能分析器時將無法取得有用的分析資訊。
測試啟動/關閉所需時間
若你想要優化 Godot 的啟動/關閉效能,可以讓效能分析器在執行 Godot 執行檔時加上 --quit 參數,這會讓 Godot 啟動後立即結束。 --quit 可以與 --editor 、 --project-manager ,或 --path <專案目錄路徑> (直接執行專案)一起使用。
也參考
更多 Godot 支援的命令列參數,請參閱 命令列教學 。
各效能分析器的操作說明
VerySleepy
請先啟動 Godot 編輯器或你的專案。如果是先啟動專案管理員,請記得要先編輯或執行專案,否則因為專案管理員會為每個專案開啟子程序,效能分析器將無法追蹤這些子程序。
打開 VerySleepy,然後在左側的程序清單中選擇 Godot 執行檔:
點擊右側的 Profile All 按鈕開始效能分析。
在編輯器或專案中執行你想進行效能分析的操作,完成後點擊 Stop (不是 Abort)。
等待結果視窗出現。
結果視窗出現後,請將檢視篩選掉外部模組(如顯示卡驅動程式)。方法是找到 Module 欄與 Godot 執行檔名稱相同的那一列,在該列上點擊右鍵,於下拉選單選擇 Filter Module to <Godot 執行檔名>。
此時結果視窗大致會長這樣:
HotSpot
打開 HotSpot,點選 Record Data:
在下一個視窗中,指定包含除錯符號的 Godot 執行檔路徑。
可自行決定是否加入命令列參數,以選擇用編輯器或直接執行專案。
如果
--path參數使用的是絕對路徑,工作目錄可填任何位置。否則請確保工作目錄設定後,專案相對路徑可正確存取。若你有管理員權限,請勾選 Elevate Privileges(提升權限)。雖然對 Godot 效能分析不是必須,但可確保所有事件都能被記錄,否則可能會遺漏部分事件。設定完成後大致如下:
點擊 Start Recording,然後在編輯器或專案中執行你要分析的操作。
可以正常結束編輯器或專案,也可以在 HotSpot 按下 Stop Profiling 提前停止。若你不在乎引擎關閉流程,提前結束分析會得到更乾淨的分析資料。
點選 View Results,等待產生視覺化的效能分析結果:
可利用上方分頁切換不同檢視模式,這些檢視僅是用不同方式展示相同資料。Flame Graph (火焰圖)分頁能一目了然哪些函式最耗時。這些函式便是最應優化的目標,因為優化它們能最有效提升效能。
在除 Summary 以外的所有分頁底部,都可以看到引擎啟動的 CPU 執行緒清單,並顯示各執行緒的 CPU 使用率。這有助於找出特定時間點的瓶頸執行緒。
備註
如果不想將啟動過程納入效能分析,可以讓 HotSpot 直接附加到正在執行的程序:點選 Record Data,將 Launch Application 下拉選項設為 Attach To Process(es)。
這種附加程序的方式和 VerySleepy 的操作流程很像。
Xcode Instruments
打開 Xcode,從 Xcode 應用選單選擇 Open Developer Tool - Instruments:
在 Instruments 視窗中雙擊 Time Profiler:
在 Time Profiler 視窗中,點擊 Target 選單,選擇 Choose target...,然後於下一個視窗設定 Godot 執行檔路徑、命令列參數與環境變數。
你也可以從 Target 選單將 Time Profiler 附加到正在執行的程序。
點選 Start an immediate mode recording 按鈕開始效能分析。
在編輯器或專案中執行要分析的操作,完成後點選 Stop 按鈕。
等待結果顯示。
在視窗底部會看到所有已啟動 CPU 執行緒的呼叫樹,以及 Heaviest Stack Trace 概覽。
於(視窗底部)**Call Tree** 選單選擇 Hide system libraries,即可移除外部模組。
你可以利用視窗上方的時間軸,檢視特定時間區間的詳細資訊。