This document is about: QUANTUM 2
SWITCH TO

Profiling

概述

一般來說,分析是一個很好的工具,可以找到各個部分程式碼之間的相對性能,並使開發人員能夠深入研究熱點。但是要找到絕對的效能度量是沒什麼用的,因為分析工具的額外負荷將影響性能,尤其是Unity的分析工具。

推薦的效能分析路徑是:

  1. 使用Quantum發行版本組建(Quantum解決方案)和附上的Quantum圖表分析工具IL2CPP Unity組建來測量模擬時間、轉譯時間等,以提供過程中總體的數據。
  2. 然後,大致了解在哪裡查找(是模擬還是轉譯等),然後使用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時間軸分析工具。它只有當DebugReleaseProfiler設定中編譯Quantum解決方案時提供資料(後者在Quantum 2.1中被新增)。與Unity分析工具類似,在遠端設備上運行的應用程式透過相同本機網路內的UDP連線到Unity編輯器。

quantum task profiler
Quantum工作分析工具

遠端分析

可以遠端連接到Quantum工作分析工具,以組建與編輯器相同網路的運行方式(UDP埠30000)。要啟用該功能,只需切換QuantumEditorSettings資產底部的Remote Profiler勾選方塊即可。之後關閉並重新打開工作分析工具檢視。

profiling graphs
針對Quantum編輯器設定中的遠端分析工具進行切換

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 serverOrange = checksum calculated
profiling graphs
即時分析圖表

關於標記的備註

為了更好的易讀性,標記圖表的運行速度比其他圖表快2倍。這可以透過分析工具預製件上的Samples屬性進行調整。

MarkersProfiler的多個執行個體被支援:

  1. 透過名稱MarkersProfiler分析工具獲取執行個體= MarkersProfiler.Get(GAMEOBJECT_NAME)
  2. 調用profiler.SetMarker(INDEX)

其他工具

即時分析工具還包含其他(更基本的)工具,用於:

  • 改變目標FPS (Application.targetFrameRate);和
  • 模擬網路狀況(延遲、抖動、中斷)。

這些對於快速模擬不同的轉譯速度和不良網路很有用。效果可以立即在圖表中看到(已預測幀、模擬時間……)。

請注意: 模擬網路中斷時,請謹慎設定值。使用1-3%來模擬網路中斷,使用更高的值來模擬本機中斷(例如,與3面牆後面的路由器的連線不良)。

Back to top