Profiling
概述
一般來說,分析是一個很好的工具,可以找到各個部分程式碼之間的相對性能,並使開發人員能夠深入研究熱點。但是要找到絕對的效能度量是沒什麼用的,因為分析工具的額外負荷將影響性能,尤其是Unity的分析工具。
推薦的效能分析路徑是:
- 使用Quantum發行版本組建(Quantum解決方案)和只附上的Quantum圖表分析工具的IL2CPP Unity組建來測量模擬時間、轉譯時間等,以提供過程中總體的數據。
- 然後,大致了解在哪裡查找(是模擬還是轉譯等),然後使用Unity分析工具或Quantum工作分析工具進行分析工作階段。
請記住,Quantum偵錯組建可能比發行版本組建慢5倍。此外,debug+mono組建可能比release+il2cpp組建慢10倍。
Unity分析工具
Quantum效能統計數據會整合到Unity分析工具中,並且在預設情況下會在Quantum執行器指令碼中啟動。
C#
Quantum.Profiling.HostProfiler.Init(..)
您可以透過這個已知的Unity分析工具模式在您的Quantum模擬程式碼中添加自訂部分:
C#
HostProfiler.Start("Foo");
{
HostProfiler.Start("Bar1");
// do work
HostProfiler.End();
HostProfiler.Start("Bar2");
// do work
HostProfiler.End();
}
HostProfiler.End();
對於最新的Quantum SDK版本(2.1),Quantum還為Unity中的時間軸分析工具提供資料。Quantum僅在Debug
設定中提供分析資料。
Quantum工作分析工具
Quantum工作分析工具是一個自訂的、獨立的、針對Unity的圖表效能分析工具,類似於Unity時間軸分析工具。它只有當Debug
或ReleaseProfiler
設定中編譯Quantum解決方案時提供資料(後者在Quantum 2.1中被新增)。與Unity分析工具類似,在遠端設備上運行的應用程式透過相同本機網路內的UDP連線到Unity編輯器。
遠端分析
可以遠端連接到Quantum工作分析工具,以組建與編輯器相同網路的運行方式(UDP埠30000)。要啟用該功能,只需切換QuantumEditorSettings
資產底部的Remote Profiler
勾選方塊即可。之後關閉並重新打開工作分析工具檢視。
Quantum圖表分析工具
Quantum圖表提供者是一個額外的工具,可以被整合到應用程式中以視覺的方式去分析效能和網路統計數據。
請下載適用於您的Unity編輯器的版本:
Unity版本 | 發佈日期 | 下載 |
---|---|---|
Unity 2018.4 | 2020年1月30日 | Profilers_Q2_20201030_Unity2018 |
Unity 2019.4+ | 2022年1月21日 | QuantumProfilers_20220121 |
即時分析
這些運行階段的圖表有助於追蹤遊戲和各種網路條件下的Quantum模擬的整體效能。圖表及其值基於Unity更新率,其中每個值等於單個Unity幀中的累積時間/計數等等。
分析工具提供以下圖表:
Engine Delta Time
:等於Unity幀之間的Time.unscaledDeltaTime
。有時Engine Delta Time
可能無法反映目標FPS,要修復此問題需要設置QualitySettings.vSyncCount = 0
;Frame Time
:所有指令碼邏輯,包括Unity內部和轉譯,但不包括等待幀結束;User Scripts Time
:運行FixedUpdate()
+Update()
+LateUpdate()
的時間;Render Time
:等於從上次LateUpdate()
到轉譯結束的時間;Simulation Time
:等於QuantumRunner.Default.Game.Session.Stats.UpdateTime
;Predicted Frames
:在Unity幀中模擬已預測Quantum幀的數量等於QuantumRunner.Default.Game.Session.PredictedFrames
;Verified Frames
:在Unity幀中模擬已驗證Quantum幀的數量;Network Activity
:自上次從伺服器傳輸資料以來的時間;Ping
:網路同儕節點來回時間(RTT);Markers
:最多8個自訂布林值可以使用標記追蹤值。每個標記都由獨特的顏色表示;預設情況下,Red = input replaced by server
和Orange = checksum calculated
。
關於標記的備註
為了更好的易讀性,標記圖表的運行速度比其他圖表快2倍。這可以透過分析工具預製件上的Samples
屬性進行調整。
MarkersProfiler
的多個執行個體被支援:
- 透過名稱
MarkersProfiler
分析工具獲取執行個體=MarkersProfiler.Get(GAMEOBJECT_NAME)
; - 調用
profiler.SetMarker(INDEX)
;
其他工具
即時分析工具還包含其他(更基本的)工具,用於:
- 改變目標FPS (
Application.targetFrameRate
);和 - 模擬網路狀況(延遲、抖動、中斷)。
這些對於快速模擬不同的轉譯速度和不良網路很有用。效果可以立即在圖表中看到(已預測幀、模擬時間……)。
請注意: 模擬網路中斷時,請謹慎設定值。使用1-3%來模擬網路中斷,使用更高的值來模擬本機中斷(例如,與3面牆後面的路由器的連線不良)。
Back to top