微型分析器

*此内容使用人工智能(Beta)翻译,可能包含错误。若要查看英文页面,请点按 此处。

微型分析器是 Roblox Studio 和 Roblox 客户端中的性能优化和故障排除工具。它提供了详细的可视化时间信息,显示在每一帧中运行的所有引擎任务,例如角色动画、物理更新、脚本运行和几何渲染。您可以识别在每一帧中运行了哪些任务,这些任务花费了多长时间,以及是否有任何任务导致您未能达到帧时间目标。

帧时间

要使用微型分析器,您必须了解帧时间和帧率之间的关系。

  • 帧时间是指一帧在屏幕上渲染所花费的时间,通常以毫秒为单位测量。
  • 帧率是指在屏幕上渲染的帧数,通常以每秒帧数(FPS)为单位测量。

较低的帧时间意味着较高的帧率。将 1,000 毫秒(1 秒)除以帧时间即可获得帧率。

平均帧时间每秒帧数
33.33 ms30 FPS
16.67 ms60 FPS
8.33 ms120 FPS
4.17 ms240 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 Main"):处理基于 CPU 的渲染任务。处理输入、Humanoids、动画/补间、物理所有权、声音和等待脚本恢复。还更新 Studio 界面并协调其他线程。

  • 工作线程("RBX Worker"):帮助主线程进行网络、物理和路径查找。由于现代 CPU 中的核心数量,您可能有许多工作线程,其中大多数在任何给定时间处于休眠状态。

  • 渲染线程("GPU"):遵循“准备、执行、呈现”的逻辑。与设备的图形处理单元(GPU)进行通信。

    • 准备:使用来自主线程的信息更新渲染模型。
    • 执行:发出渲染命令,包括 2D 界面。
    • 呈现:与 GPU 同步。

自定义脚本分析

如果您的脚本正在运行复杂的任务,您可以分析代码的关键部分,以确保它们不会花费太长时间。使用 debug.profilebegin() 和 debug.profileend() 包裹代码,以计时在这些函数调用之间完成的所有操作,并在微型分析器时间线上创建一个标签。

local RunService = game:GetService("RunService")
local function onPreSimulation()
debug.profilebegin("Hard Work")
-- 示例繁重工作:交换两个变量 200,000 次
local a, b = 0, 1
for _ = 1, 200000 do
a, b = b, a
end
debug.profileend()
end
RunService.PreSimulation:Connect(onPreSimulation)
微型分析器上有许多标签,自定义标签占用了大部分处理时间。

从其在时间线上的持续时间,您可以看出该函数使用了大量处理时间,相较于其他任务。

使用助手分析捕获

在 Studio 中,您可以请求助手自动分析暂停的微型分析器捕获,识别性能瓶颈并提出修复建议。

  1. 在 Studio 中,使用 CtrlF6 (⌘F6) 打开微型分析器。
  2. 当您发现帧时间峰值时,通过在顶部菜单中按暂停或使用 CtrlP (⌘P) 暂停捕获。
  3. 打开助手并请求分析捕获。示例提示包括:
    • “我在微型分析器中捕获了帧时间峰值——分析它。”
    • “是什么导致了峰值?”
    • “是受物理限制还是脚本限制?”
    • “哪个类别的独占时间最高?”
    • “当我在机库时,FPS 降低。重现该问题,使用微型分析器找到原因,修复它并重新测试。”

助手通过微型分析器 API 读取暂停的捕获,并返回关于可能瓶颈的报告,以及您可以应用的脚本或场景更改建议。

此功能也可以通过Studio MCP服务器工作,因此您可以将微型分析器分析集成到您自己的 AI 代理或代理循环中,以获取有关新更改如何影响游戏性能的自动反馈。

保存帧数据

如果您想保存一组帧数据以供稍后查看(或与他人分享),请使用保存到文件按钮。微型分析器将帧数据保存到名为 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。

服务器分析

除了分析客户端,您还可以捕获服务器活动的简短转储:

  1. 在桌面客户端上,加入您有编辑权限的游戏。

  2. 使用 CtrlF9 (⌘F9) 打开开发者控制台。

  3. 在下拉菜单中选择微型分析器。

  4. 在服务器选项卡中,指定要捕获的帧数(最多 60)和开始捕获前的延迟时间(最多 4 秒)。

  5. 点击开始服务器录制。

    开发者控制台微型分析器屏幕。

    几秒钟后,开发者控制台提供文件的路径,该路径与标准转储的路径相同。

仅限网页的功能

微型分析器有两个用户界面:网页用户界面(移动和转储)和桌面用户界面(客户端和 Studio)。我们建议尽可能使用网页用户界面。一般来说,这两者的工作方式相似,但网页用户界面有一些额外功能:

  • 使用X 射线菜单启用或禁用内存分配的颜色编码。

    启用 X 射线的微型分析器网页视图。
    • 主条形图中的较浅帧表示更高的内存分配。
    • 预览条的较浅部分和时间线上的较浅标签表示帧中内存分配较高的部分。
    • 在 X 射线模式下,按 C 显示内存分配的总大小,而不是分配的数量。
  • 使用导出菜单导出 CPU 或内存火焰图,这是一种特殊的可视化,聚合转储中包含的所有调用栈,保持父子层次结构,并根据持续时间进行大小调整。火焰图特别有助于识别不会导致您错过帧时间目标的任务(因此很难注意到),但运行频率如此之高,以至于它们的处理时间变得显著。

    微型分析器网页用户界面的火焰图。

    您也可以在 Studio 中创建火焰图,尽管仅限于脚本(执行时间和内存分配)。与基于网页的火焰图相比,Studio 中的火焰图是自上而下的,而不是自下而上的,并支持显著更长的捕获时间。

    Studio 中的微型分析器火焰图。
  • 将第二个转储文件拖放到网页用户界面中以生成差异火焰图,这可以帮助您识别游戏性能随时间的改进或退步。单击合并与比较以导出新的 HTML 文件。

    微型分析器差异火焰图生成器,显示左右两侧。

    差异火焰图突出显示消耗更多 CPU 或内存的转储(左或右),较亮的颜色表示更大的差异。

    微型分析器差异火焰图。

仅限桌面的功能

在桌面时间线中,左键单击标签将其添加到右下角的折线图中。该图显示任务在每帧中所花费的时间。使用此图,您可以测试游戏中特定任务的性能。完成后,右键单击图表以隐藏它。

显示任务每帧所需时间的图表。

该图与主分析器条形图同步。当前选定的帧范围在图表中以绿色突出显示。您还可以单击此图表上的任何位置,以将主分析器视图重新居中到该特定帧,这对于在详细视图中查找峰值非常有帮助。

搜索详细视图

在桌面客户端中,您可以在详细视图中按名称搜索任务:

  1. 使用 CtrlF6 (⌘F6) 打开微型分析器并切换到详细模式。

  2. 按 CtrlF (⌘F) 打开搜索框。

  3. 输入任务或标签名称的一部分。匹配不区分大小写,并在名称中的任何位置找到文本。匹配的标签保持其颜色,所有其他标签变暗。包含匹配项的帧在帧时间图中突出显示。

  4. 在匹配项之间移动:

    操作快捷键
    下一个匹配F3 或 Enter
    上一个匹配ShiftF3 或 ShiftEnter

    您还可以单击搜索框旁边的 < 和 > 按钮。当前匹配项被轮廓和三角形标记,计数器如 12 / 340 显示其在所有匹配项中的位置。如果匹配项不在屏幕上,时间线会滚动到它。如果您已平移时间线,导航将从当前可见的匹配项继续。

  5. 按 Esc,或再次按 CtrlF (⌘F) 关闭搜索。关闭搜索不会关闭微型分析器。

©2026 Roblox Corporation、Roblox、Roblox 标志及 Powering Imagination 是我们在美国及其他国家或地区的注册与未注册商标。