識別性能問題

*此內容是使用 AI(Beta 測試版)翻譯,可能含有錯誤。若要以英文檢視此頁面,請按一下這裡

一般來說,識別性能問題通常會採用以下三種類別之一: frame rate (compute)、記憶體 (Memory) 或載入時間 (load time)。

Roblox 有一些工具可以偵測性能問題,其中一些可以在 Roblox 客戶端 (和因此 Studio) 上使用,而一些只能在 Studio 上使用。 雖然您可以直接觀察客戶端行為,但您必須使用工具來診斷伺服器問題。

診斷工具

工具說明地點鍵盤快捷方式環境
開發者控制器一個具有實時日誌訊息、錯誤和詳細資訊的控制器。它對於查看記憶體使用率、關鍵伺服器狀履約和腳本性能統計資料有幫助。它的資源管理器可以查看內存使用率、關鍵伺服器狀態和腳本性能統計資料。工作室F9生活會議、Studio 測試
微型分析器一種可以分析每個框架中的任務所花費的計算時間的Debug工具。它可以生成儲存檢查表,以顯示個別框架的精確分解。這很有用於識別導致性能問題的特定任務。你可以在客戶端或服務伺服器上執行 profiler,這取決於問題的雙方。體驗 Ctrl Alt F6 ( ⌘ 1>⌥1> 3> F63> )生活會議、Studio 測試
性能統計條一個工具欄,包含基本性能統計資料,包括內存使用率、CPU、GPU、網路資料傳輸和接收、以及延遲時間。體驗Ctrl AltF7 ( 0>⌥0> 2>F72> )生活會議、Studio 測試
Debug 統計提供有關圖形、物理、網路交通和 FPS 的詳細資訊。體驗 Shift F1 , Shift F2 , 1> Shift1> 3> F33> , 6> Shift6> 8> F48> , 1> Shift1> 3> F53>生活會議、Studio 測試
績效儀表板一個包含客戶端和伺服器記憶體使用率、客戶端框架評分、伺服器心跳和崩溃率的聚合圖形數據的大臉板。它對分析性能模式過時的監視有幫助。參閱「監視性能」。創作者仪表板現場會議

伺服器計算

伺服器心跳為所有體驗設定的 60 FPS 上限,因此較低的值可能暗示性能問題。要檢查伺服器心跳:

  • 使用 開發者控制器 - 在 伺服器工作 標籤中, 擴展 心跳 行並檢查 1>每秒步驟1> 值, 代表您的體驗的心跳.

  • 使用 微診斷器 來檢查每個框架的長度,以確認有些是否超過 16.67 毫秒。

由於伺服器心跳已降低,延遲時間 (通常稱為延遲) 也會增加。伺服器需要更長的時間才能完成每個框架中的任務,這會導致延遲時間。發送和接收網路數據的延遲時間也會增加,這會導致平均延遲時間。若要檢查所有連接到伺服器的玩家,請前往 開發

客戶端電腦

預設客戶端的最高幀率為 60 射擊。 然而,用戶可以提升幀率上限至 240 射擊。

在設備之間的圖像速率大為不同。例如,高端的 PC 可能能夠「暴力」一個計算問題,並且只會發生微弱的圖像速率下降。如果您在低端設備上測試,問題通常會更嚴重,因此更容易發現。

要檢查您的體驗滙拍率:

  • 在客戶端按下 Shift F5 以顯示錯誤統簡介。

  • 在 Studio 檢視 標籤中,選擇 統計資料 > 摘要 以啟用錯誤檢查統計資料。

  • 使用 微處理器 ,您可以檢查圖形,以確認框架是否長於 16.67 毫秒。

記憶體

有幾種方法可以檢查記憶體驗使用率:

  1. 開啟開發者控制器並切換到 記憶體 標籤。這個標籤會提供記憶體的分配方式。使用客戶端而不是Studio來獲得最準確的閱取。
  2. 啟用客戶端的 性能統計 視圖從設定選單中查看總客戶端記憶體使用率。

高內存使用率不一定是指標,但一些可能需要調查的提示是:

  • 顯示在 績效儀表 中的客戶端崩溃的比例,特別是與更新相關的驟然上棒。一些崩溃是預期的,但您應該調查是否您的崩溃率在 2-3% 以上。
  • 在您想要測試的設備上發生崩溃。
  • 您的伺服器記憶體使用率超過 3 GB。

體驗的內存使用率在客戶端上的主要來源是資產,例如圖像和網格,載入到圖形記憶體以便能夠渲染。在 開發者控制台 中,您可以檢視圖形記憶體由於資產而消耗的內容:

  • GraphicsMeshParts - 圖形記憶體由網格所消耗。
  • 圖形紋理 - 圖形內存由紋理所消耗。

載入次數

沒有內置工具可以檢查載入時間,但因為它們不需要毫秒級精確度,所以停止計時器通常就是您了解您當前基礎架構和檢查您是否作出了任何實質性改進的方法。您可以使用 ReplicatedFirst 中的客戶端指令來取得一些關於您變更影響載入時間的方法的線索,但


local startTime = os.clock()
game.Loaded:Connect(function()
local loadTime = os.clock() - startTime
local roundedLoadTime = math.round(loadTime * 10000) / 10000 -- 四位十六進制
print("Game loaded in " .. roundedLoadTime .. " seconds.")
print("Number of instances loaded: " .. #game.Workspace:GetDescendants())
end)

了解更多資訊,請啟用 Studio 設定 > 網路 > 列印加入大小分析 ,列印大小最大的前 20 個實例,並且按照實例類型的百分比來列印實例類型的最佳列印方式。