UE4 stats文件Profiler工具


Profiler工具的代碼詳見:UnrealEngine\Engine\Source\Developer\Profiler

UE4提供了2種使用Profiler工具的方式:

① UE4編輯器中的Session Frontend面板,見菜單“Window” -- “Developer Tools” -- “Session Frontend”

② 獨立的UnrealFrontend工具

 

離線模式

控制台命令抓取性能數據並保存到文件

stat startfile // starts a stats capture, creating a new file in the Profiling directory; stop with stat StopFile to close the file

stat stopfile  // stops dumping a capture (regular, raw, memory).  finishes a stats capture started by stat StartFile

stat startfileraw  // starts dumping a raw capture.  4.26版本可以生成ue4statsraw文件,但是Profiler工具不能支持該文件的讀取   注:詳見FProfilerManager::LoadRawStatsFile函數

stat stopfileraw   // 功能與stat stopfile一致

 

UE4Editor.exe "%GameDir%\MyGame.uproject" TestMap_Main -game -ExecCmds="stat startfile"   // 啟動游戲后,然后執行stat startfile命令

 

ue4stat文件保存在:Saved\Profiling\UnrealStats目錄中

 

在代碼中開啟和關閉stat文件

#if STATS
    DirectStatsCommand(TEXT("stat startfile"));
#endif

#if STATS
    DirectStatsCommand(TEXT("stat stopfile"),true);
#endif

 

Profiler工具讀取性能數據

在Frontend工具中的Profiler標簽下,點擊Load來讀取ue4stat文件

也可以點擊Load Folder來加載某個目錄下的所有ue4stat文件

注:紅框處會列出所有的ue4stat文件, 點擊即可切換

 

實時模式

 

首先需要在uproject文件中啟用TcpMessagingUdpMessaging插件   注:默認會啟用,但uproject中可將其關閉

 

本機或USB數據線的連接模式

游戲側

UE4Editor.exe %GameDir%\MyGame.uproject -skipcompile  // 編輯器

UE4Editor.exe %GameDir%\MyGame.uproject ThirdPersonExampleMap -messaging -SessionName=mySession -game -skipcompile  // standalone單擊  對本機或USB數據線連接的機器上的UnrealFrontend可見

Profiler工具側

UE4Editor.exe %GameDir%\MyGame.uproject -skipcompile

UnrealFrontend.exe

 

同一wifi網絡的連接模式

游戲側

PC:UE4Editor.exe %GameDir%\MyGame.uproject ThirdPersonExampleMap -messaging -SessionName=mySession -TcpMessagingConnect=10.46.80.61:7777 -game -skipcompile  // 以standalone啟動ThirdPersonExampleMap地圖,並連接到10.46.80.61:7777

Android:UE4CommandLine.txt寫入如下內容,並adb push到手機的UE4Game/UAGame目錄中

-messaging TcpMessagingConnect=10.46.80.61:7777 -SessionOwner=kekec -SessionName=fps1

IOS:ue4commandline.txt(注:要全小寫)寫入與Android一樣的內容,並放到如下目錄中

 

Profiler工具側

UE4Editor.exe %GameDir%\MyGame.uproject -TcpMessagingListen=10.46.80.61:7777 -SessionOwner=kekec -skipcompile  //  啟動編輯器並監聽10.46.80.61:7777   注:10.46.80.61為編輯器所在機器的IP    kekec為當前計算機的登錄用戶名

UnrealFrontend.exe -TcpMessagingListen=10.46.80.61:7777 -SessionOwner=kekec  //  啟動UnrealFrontend.exe並監聽10.46.80.61:7777   注:10.46.80.61為UnrealFrontend所在機器的IP   kekec為當前計算機的登錄用戶名

 

實時Profiler

為tips觸發區域,鼠標放置上去,會顯示更詳細的信息說明

 

Load:加載一個ue4stats文件

Load Folder:加載一個目錄下的所有ue4stats文件

Data Preview:在左側選中一個Session后, 點擊該按鈕可實時profiler

Live preview:讓下面的GR紅藍條、Graph View條Scroll到最新幀

Data Capture:startfile / stopfile

Statistics:開啟Stats Profiler

FPS Chart:統計整個文件的fps分布

 

面板其他功能說明 

GR紅藍條說明

① 紅色為Game Thread的耗時(含Waiting那部分時間)  -- 即FrameTime

② 藍色為Rendering Thread的耗時(含Waiting那部分時間)

③ 通過紅藍條的高度,可快速找到耗時的區域部分

 

Graph View說明

① 雙擊左邊Panel中的統計細項,會在Graph View上繪制出其各幀的數值曲線

② (Threads) GameThread [0x1d3b] 24.06(MS)/Calls 1 - {Value Min:22.796 Avg:45.743 Max:1857.557(MS) / Calls (100%) Min:1.0 Avg:1.0 Max:1.0}

③ 數值曲線下面的時間信息(907.7s、921.6s、934.7s 。。。)是錯誤

 

Stat統計項

所有統計大類如下:

Group Name為Memory的統計細項如下:

統計項類型:

為hierarchy類別,可以嵌套子節點,包含CallCount、InclusiveTime、ExclusiveTime等字段

為int或float數字類型

為Memory類型

 

hierarchy類別數據CallStack

 

工具欄說明:

① Type有:OneFrame(選中一幀時)     Average、Maximum(拉框選中一個區域時)

② View mode:Hierarchical(層次樹,按Inc Time排序)、

                          Inclusive(Flat方式,按Inc Time排序)、Inclusive(Flat方式,同名統計項合並在一起,按Inc Time排序)

                          Exclusive(Flat方式,按Exc Time排序)、Exclusive(Flat方式,同名統計項合並在一起,按Exc Time排序)

③   幀選擇的Undo、Redo

④   快速展開選中節點Inc Time消耗最高的路徑

 

其他區域說明: 

① 在Event Name層次樹中的統計項均為hierarchy類別。背景色越紅,說明該項的Inc Time(MS)就越高,耗時也就越高

② IncTime的兩列為包含時間,Exc Time的兩列為獨占時間,數據為0,是顯示問題;Calls為當前幀該項統計次數

③ Event Name層次樹的頂層節點均為Thread。如:StatsThread [0x1d83]    其中StatsThread為線程名,0x1d83為16進制的線程ID

④ 可先通過Thread下拉框選擇自己感興趣的線程,那么其他線程就會變灰;重新選做None后,就全部恢復正常

⑤ 在Event Name層次樹中,選中一個節點后,左邊Calling Functions下會畫出父節點的按鈕,點擊后,會往頂層回溯;中間Current Function為選中節點;

     右邊Called Functions下會畫出所有子節點的按鈕,點擊后,會往下回溯;名為Self的子節點比較特殊,它的Inc Time(MS)表示其父節點的獨占時間。

 

右鍵快捷菜單和快捷鍵說明:

①  Expand All(展開所有子節點) --> Ctrl + A(全選)

② 按住Ctrl或Shift來快速多選

③ Select Stack:向頂層回溯,選中整個Stack

④ Copy To Clipboard(快捷鍵為Ctrl + C):可以將選中的節點拷貝到剪切板中

 

參考

分析工具參考

UE4 Android下實時profile獲取數據

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM