Defold 引擎内置了性能分析工具. 这些工具用来分析查找性能和内存占用的问题. 内置分析器只在打包 debug 版应用中可用.
Debug 应用包含运行时可视分析工具可以在应用最上层把分析信息显示出来:
function on_reload(self)
-- 热重载时打开分析表.
profiler.enable_ui(true)
end
此分析器提供了一些用来改变其数据显示方式的函数:
profiler.set_ui_mode()
profiler.set_ui_view_mode()
profiler.view_recorded_frame()
详情请见 分析器 API 文档.
运行debug版游戏时, 也可以从浏览器访问一个基于网页的分析器. 它可以对游戏每一帧进行取样并分析.
访问分析器:
http://<device IP>:8002
其中 <device IP>
是设备 IP 地址. 你可以从菜单 Project ▸ Target 找到设备的 IP 地址. 如果调试计算机本机游戏, 访问 http://localhost:8002 即可.
最上面, 挨着 Capture 按钮有一个开关用来切换 CPU/Frame 分析器 和 Resource 分析器.
CPU 分析器对当前采样的数据分析图表分为4个部分. 要更新采样数据, 点击最上面的 Capture 按钮即可.
帧预览下面是采样数据的详细展示.
点击帧预览视图中的方块就会在下面给出这个帧的详细数据.
勾选视图中的复选框可以给出下面的曲线图.
资源分析图表分为2个部分, 一个是集合层级关系, 显示了游戏中所有对象和组件实例, 另一个展示了加载的各种资源.
编译游戏时有个选项可以生成编译报告. 通过报告可以整体把握游戏包中各个资源的空间占用情况. 编译游戏时开启 Generate build report 选项即可.
游戏编译完成后将生成 “report.html” 文件. 用浏览器打开这个文件进行查阅:
Overview 按资源类别给出空间占用饼图.
Resources 给出更详细的数据表格可以用来按照大小, 压缩比, 加密与否, 类别和目录进行排序. 使用 “search” 框还可以对这些数据进行过滤.
Structure 基于项目结构给出空间占用树状图. 基于资源文件和目录从绿色 (占用小) 过渡到蓝色 (占用大).
除了内置工具, 还有许多免费高效的分析跟踪工具. 举例如下:
https://github.com/jgrahamc/ProFi
注意纯 Lua 分析器使用时会为代码执行增加一些负担. 这可能会造成测量结果不准确. 虽然计数器工具还是蛮准确的.
此工具可以用来分析运行中的 Defold 应用如何使用 OpenGL. 可以用来跟踪 OpenGL 函数调用, 在 OpenGL 函数上打断点, 调查应用资源 (纹理, 程序, 着色器之类的), 查看缓存内容, 以及 OpenGL 的各方面状态.
Android 分析器是一组能够试试捕捉游戏 CPU, 内存及网络使用情况的工具. 可以基于取样跟踪代码执行, 堆栈使用, 内存分配及网络文件传输. 要使用这个工具需要在 “AndroidManifest.xml” 里设置 android:debuggable="true"
.
注意: 從 Android Studio 版本 4.1 開始, 也可以 不用運行 Android Studio 而直接進行分析.
这组工具可以用来查看, 微调和重放从程序到显卡驱动的功能调用. 要使用这个工具需要在 “AndroidManifest.xml” 里设置 android:debuggable="true"
.
Did you spot an error or do you have a suggestion? Please let us know on GitHub!
GITHUB