微型分析器是Roblox Studio和Roblox客戶端中的一種性能優化和故障排除工具。它提供了所有在幀期間運行的引擎任務的詳細可視時序信息,例如角色動畫、物理更新、腳本運行和幾何渲染。您可以識別出哪些任務在某一幀期間運行,這些任務花了多少時間,是否有任何任務導致您錯過幀時間目標。
幀時間
使用微型分析器之前,您必須了解幀時間與幀率之間的關係。
- 幀時間是幀渲染到屏幕上所需的時間,通常以毫秒為單位測量。
- 幀率是每秒在屏幕上渲染的幀數,通常以每秒幀數(FPS)為單位測量。
較低的幀時間意味著較高的幀率。將1000毫秒(1秒)除以幀時間即可獲得幀率。
| 平均幀時間 | 每秒幀數 |
|---|---|
| 33.33毫秒 | 30 FPS |
| 16.67毫秒 | 60 FPS |
| 8.33毫秒 | 120 FPS |
| 4.17毫秒 | 240 FPS |
然而,要實現流暢的遊戲玩法,僅有高幀率是不夠的。您需要一致的幀時間。例如,如果59幀在10毫秒內到達,而一幀需要410毫秒,玩家會感受到巨大的、令人震驚的卡頓,儘管遊戲的幀率為60 FPS。如果所有幀的渲染時間大致相同,則您的遊戲會因的一致性而感覺更加流暢,尤其是在較低的幀率下。
微型分析器專注於幀時間。它的目的是幫助您識別幀時間的峰值及其造成的原因。
開啟微型分析器
根據平台的不同,開啟微型分析器的方法也有所不同:
在移動客戶端上,打開設置菜單並將微型分析器設置為開啟。然後,從同一網絡上的開發機器,使用您的網頁瀏覽器導航到提供的IP地址和端口。

此屏幕截圖顯示的IP地址為172.18.56.105,端口為1338,您需要導航到172.18.56.105:1338。根據您的設備網絡配置,您可能會看到多個IP地址。如果一個地址無法使用,請嘗試下一個。
在桌面客戶端上,按CtrlF6(⌘F6)。
在Studio中,按CtrlF6(⌘F6)。
通常,移動客戶端是對您的遊戲進行性能分析的最佳選擇。大多數Roblox玩家使用電話和平板電腦,而這些設備在性能上有嚴重的熱和電力限制。如果您的遊戲在一台中檔的Android平板電腦上運行良好,那麼它幾乎肯定在遊戲桌面上運行得更好。
微型分析器基礎
微型分析器有兩個關鍵組件:幀時間條形圖和詳細任務時間線。
- 幀時間圖在界面的頂部,顯示每幀所需的渲染時間。條形越高,表示幀時間越長。
- 時間線顯示在幀期間運行的所有單獨任務。條形越寬,表示運行花費的時間越長。
在微型分析器中的典型工作流程是使用幀時間圖識別出一個峰值(更高的條形),然後使用時間線識別哪些任務造成了這個峰值。然後,您可以查看標籤參考以獲得該任務和如何改善其性能的信息。

幀時間圖
每個條形的高度表示完成該幀所需的毫秒數。最新的幀在右側。懸停在一幀上可以獲得一些有關CPU和GPU使用的基本信息。

-藍色条形表示渲染牆時間超過工作牆時間的幀。在這些幀中,主渲染線程花費的時間比任何工作線程長。
如果遊戲未能達到您的幀時間目標並且有大量藍色幀,那麼這表明存在渲染瓶頸。常見原因包括過度物體密度、物體移動和照明。請參見改善性能。
-紅色條形表示兩個條件為真:
- 渲染牆時間超過工作牆時間
- GPU等待時間大於2.5毫秒
紅色條形比橙色和藍色更少見,通常是由於物體複雜性過高、紋理大小和視覺效果。優化方式與藍色條形類似。請參見改善性能。
幀末尾的小任務有時會影響工作牆時間和渲染牆時間,這是更關注幀時間而非幀顏色的好理由。沒有“好”的顏色可以追求。橙色、藍色和紅色的混合並不是問題,只要您達到幀時間目標。如果您沒有達到幀時間目標,顏色可以指示需要優化的地方。
時間線
左鍵單擊並拖動以平移時間線。在擁有許多CPU核心的機器上,您可能需要上下平移以找到執行特定任務的線程。

滾動可放大和縮小時間線。結合時間線頂部的毫秒標籤,您可以獲得任務在絕對意義上所需時間的感覺,以及相對於其他任務所需的時間。

條形圖上方的綠色覆蓋層指示當前在時間線上可見的幀數——您的縮放級別。左鍵單擊某一幀條形可跳轉到時間線上該位置。
您可能需要調整您的縮放級別,但懸停在條形上將高亮顯示時間線上的幀。淺灰色線條劃分幀。

直接位於其他標籤下方的標籤指示作為更高級別任務的一部分執行的任務。
通常,您希望排查表現最差的子任務,而不是父任務;一個父任務的耗時不能少於其子任務的總和。
右鍵單擊標籤可將時間線縮放到該任務的確切持續時間。
如果信息量過於龐大,請使用分組或線程菜單過濾時間線。例如,您可能只想查看主線程中的渲染任務。

使用CtrlF(⌘F)跳轉到占用最多時間的任務的出現次數。例如,computeLightingPerform在每個客戶端幀中運行。如果您在一個擁有128幀的轉儲中搜索它,則可以跳轉到該幀所需的時間最長的位置。
線程
與許多程序一樣,Roblox使用多個線程同時執行任務序列。微型分析器在時間線的左側顯示線程名稱。

有三種類型的重要線程:
主(“RBX主”):處理基於CPU的渲染任務。處理輸入、Humanoids、動畫/過渡、物理所有權、聲音和等待腳本恢復。還更新Studio接口並協調其他線程。
工作(“RBX工作”):幫助主線程進行網絡、物理和尋路。由於現代CPU中的核心數量,您可能擁有許多工作線程,其中大多數在任意時間處於休眠狀態。
渲染(“GPU”):遵循“準備、執行、展示”的邏輯。與設備的圖形處理單元(GPU)進行通信。
- 準備:使用主線程的信息更新渲染模型。
- 執行:發出渲染命令,包括2D接口。
- 展示:與GPU同步。
自定義腳本性能分析
如果您的腳本在執行複雜任務,您可以分析代碼的關鍵部分,以確保它們不會花費過長時間。在這些函數調用之間用 debug.profilebegin() 和 debug.profileend() 包裝代碼,以計時在這些函數調用之間完成的所有操作,並在微型分析器時間線上創建標籤。
local RunService = game:GetService("RunService")
local function onPreSimulation()
debug.profilebegin("辛苦的工作")
-- 示例艱苦工作:交換兩個變量200,000次
local a, b = 0, 1
for _ = 1, 200000 do
a, b = b, a
end
debug.profileend()
end
RunService.PreSimulation:Connect(onPreSimulation)

從其在時間線上的持續時間可以看出,該函數在與其他任務相比時占用了大量處理時間。
保存幀數據
如果您想保存一組幀數據以便稍後查看(或與其他人共享),請使用保存到文件按鈕。微型分析器將幀數據保存為名為microprofile-<date>-<time>.html的獨立HTML文件。

在桌面客戶端或Studio中,使用轉儲菜單。在這兩種情況下,微型分析器會自動將文件保存到Roblox日誌目錄中:
在Windows上,檢查%LOCALAPPDATA%\Roblox\logs。
如果您使用通用Windows平台(UWP)應用,請檢查\Users\<username>\AppData\Local\Packages\ROBLOXCORPORATION.ROBLOX_<hash>\LocalState\logs\。
在macOS上,檢查~/Library/Logs/Roblox。
設定伺服器性能分析
除了分析客戶端之外,您還可以捕獲伺服器活動的簡短轉儲:
在桌面客戶端中,加入您擁有編輯權限的遊戲。
使用 CtrlF9 (⌘F9)開啟開發者控制台。
在下拉選單中選擇微型分析器。
在伺服器標籤中,指定要捕獲的幀數(最多60)和開始捕獲前的延遲時間(最多4秒)。
僅限網頁的功能
微型分析器有兩個用戶界面:網頁用戶界面(移動和轉儲)和桌面UI(客戶端和Studio)。我們推薦在可能的情況下使用網頁用戶界面。通常,這兩者的工作原理相似,但網頁用戶界面有一些額外的功能:
使用X射線菜單啟用或禁用內存分配的顏色編碼。

- 主條形圖中的較淺幀顯示較高的內存分配。
- 預覽條的較淺部分和時間線上的較淺標籤顯示具有更高內存分配的幀部分。
- 在X射線模式下,按C顯示內存分配的總大小,而不是分配的個數。
使用導出菜單導出CPU或內存火焰圖,這是一種專門的可視化,聚合轉儲中包含的所有調用棧,保持父子層級,並根據持續時間進行調整。火焰圖在識別未導致您錯過幀時間目標(因此很難注意到)但運行頻繁的任務時特別有用,因為它們的處理時間可能會變得重要。

您也可以在Studio中創建火焰圖,但僅限於腳本(執行時間和內存分配)。與基於網頁的火焰圖相比,Studio中的火焰圖是自上而下的,而非自下而上的,並支持顯著更長的捕獲時間。

將第二個轉儲文件拖放到網頁用戶界面中,以生成差異火焰圖,這可以幫助您識別您的遊戲性能隨時間的改進或退步。點擊合併與比較以導出新的HTML文件。

差異火焰圖突出顯示了消耗更多CPU或內存的轉儲(左或右),較明亮的顏色表示更大的差異。

僅限桌面的功能
在桌面時間線上,左鍵單擊標籤將其添加到右下角的折線圖中。該圖顯示任務每幀所需的時間。通過此圖,您可以測試遊戲中某些任務的性能。完成後,右鍵單擊圖隱藏它。

該圖與主性能分析條形圖同步。當前所選的幀範圍在圖表上以綠色高亮顯示。您還可以在此圖中單擊任何地方,將主性能分析視圖重新居中到該特定幀,這對於查找詳細視圖中的峰值特別有用。
