• 产品手册
  • LUA开发者文档
  • LuaTracy使用文档

Lua tracy使用文档

Tracy是什么

Tracy是个通用性能分析工具,项目地址为:wolfpld/tracy: Frame profiler (github.com)

它会以火焰图的形式展示出Lua代码的耗时,方便你定位性能热点、优化代码

启动方式

在下面2种方式中选择一种即可

使用《Y3开发助手》启动(推荐):

  1. 在VSCode中安装《Y3开发助手》

LT1

  1. 切换到《Y3开发助手》面板,勾选“启用Tracy”后使用助手启动游戏

LT2

  1. 或者先启动游戏后点击《自定义视图》中的“启动Tracy”按钮

LT3

手动启动:

  1. 启动游戏,然后在游戏中执行Lua代码 enable_lua_profile(true) (请在游戏初始化事件或计时器等待1帧后再执行,直接在加载Lua的过程中执行可能会导致游戏闪退)

  2. 找到Tracy工具,路径在编辑器安装目录下game\Package\ExternalResource ,如果找不到需要在在编辑器安装目录下game\LocalData\Patch\ExternalResource\tracy中去找

  3. 确保 “Client address” 里填的是 “127.0.0.1”,然后点击 “Connect”

LT4

如何分析卡顿

LT5

顶部的柱条是每帧花费的时间,花费的事件越长柱条就越长。上图红色的毛刺表示这帧发生了卡顿,我们来对他进行进一步分析。

我们点击一下这个毛刺,视图便会定在这帧附近。使用鼠标滚轮可以缩放选择范围,要注意的是缩放时会以保持你鼠标位置为中心进行缩放。按住鼠标右键可拖动视图。

LT6

这里会以火焰图的形式展示Lua函数的调用关系以及耗时占比。然后再点开 is_prime 可以看到详细信息

LT7

展开 Zone trace 即可看到详细的调用堆栈与调用位置,我们可以看到耗时发生在 test.lua 的 212 行,是个叫做 is_prime 的函数

LT8

找到对应的代码,发现果然有问题,把红框处的 num 改为 math.sqrt(num) 后游戏不再卡顿。

然后我们点击上方的 Find zone 按钮,输入刚刚的函数名 is_prime 后回车,便可看到下方的界面

LT9

这张图上我们可以看到此函数一共执行了231次,总耗时11.05毫秒,平均耗时47.84微秒。

根据下方的火焰图可以得知,最快的时候只要1.46微秒,但最慢的时候要112.31微秒。整个图形分布符合试除法的特性。