|
@@ -3,11 +3,11 @@ title: Defold 性能分析
|
|
|
brief: 本教程介绍了 Defold 内置的性能分析工具.
|
|
|
---
|
|
|
|
|
|
-# Profiling
|
|
|
+# 性能分析
|
|
|
|
|
|
-Defold 引擎内置了性能分析工具. 这些工具用来分析查找性能和内存占用的问题. 内置分析器只在打包 debug 版应用中可用.
|
|
|
+Defold 引擎内置了性能分析工具. 这些工具用来分析查找性能和内存占用的问题. 内置分析器只在打包 debug 版应用中可用. Defold 的逐帧分析使用了 [Celtoys 出品的远程分析器](https://github.com/Celtoys/Remotery).
|
|
|
|
|
|
-## 运行时可视分析表
|
|
|
+## 运行时可视分析器
|
|
|
|
|
|
Debug 应用包含运行时可视分析工具可以在应用最上层把分析信息显示出来:
|
|
|
|
|
@@ -20,7 +20,7 @@ end
|
|
|
|
|
|

|
|
|
|
|
|
-此分析器提供了一些用来改变其数据显示方式的函数:
|
|
|
+此分析器提供了一些函数用来改变其数据显示方式:
|
|
|
|
|
|
```lua
|
|
|
|
|
@@ -33,56 +33,59 @@ profiler.view_recorded_frame()
|
|
|
|
|
|
## 网页版分析器
|
|
|
|
|
|
-运行debug版游戏时, 也可以从浏览器访问一个基于网页的分析器. 它可以对游戏每一帧进行取样并分析.
|
|
|
+运行debug版游戏时, 可以用浏览器访问一个基于网页的分析器.
|
|
|
|
|
|
-访问分析器:
|
|
|
+### 逐帧分析器
|
|
|
+逐帧分析器可以对正在运行中的游戏进行采样然后逐帧进行分析. 访问分析器的方法
|
|
|
|
|
|
1. 在目标设备上启动游戏.
|
|
|
-2. 选择菜单 <kbd> Debug ▸ Open Web Profiler</kbd>. 或者比如说, 同时调试多个设备时, 可以打开浏览器访问地址 `http://<device IP>:8002` 其中 `<device IP>` 是设备 IP 地址. 你可以从菜单 <kbd>Project ▸ Target</kbd> 找到设备的 IP 地址. 如果调试计算机本机游戏, 访问 http://localhost:8002 即可.
|
|
|
+2. 选择菜单 <kbd> Debug ▸ Open Web Profiler</kbd>.
|
|
|
|
|
|
-
|
|
|
-最上面, 挨着 *Capture* 按钮有一个开关用来切换 *CPU/Frame 分析器* 和 *Resource 分析器*.
|
|
|
-
|
|
|
-### CPU/Frame 分析器
|
|
|
-CPU 分析器对当前采样的数据分析图表分为4个部分. 要更新采样数据, 点击最上面的 *Capture* 按钮即可.
|
|
|
+逐帧分析器分为若干视图. 每个视图给出当前运行游戏某个方面的数据.
|
|
|
+点击右上角的暂停按钮可暂停视图数据的更新.
|
|
|
|
|
|

|
|
|
|
|
|
-帧预览
|
|
|
-: 帧预览视图把最近采集的 20 帧并排放置. 每个方块的高度代表这个帧的耗时. 最左边显示这些帧最大耗时.
|
|
|
+::: 注意
|
|
|
+同时使用多个目标设备时, 可以随时手动切换. 方法是修改页面上方 Connection Address 框内的地址来匹配控制台输出的远程分析器 URL:
|
|
|
|
|
|
- 
|
|
|
+```
|
|
|
+INFO:ENGINE: Defold Engine 1.3.4 (80b1b73)
|
|
|
+INFO:DLIB: Initialized Remotery (ws://127.0.0.1:17815/rmt)
|
|
|
+INFO:ENGINE: Loading data from: build/default
|
|
|
+```
|
|
|
+:::
|
|
|
|
|
|
- 帧预览下面是采样数据的详细展示.
|
|
|
+Sample Timeline
|
|
|
+: 采样时间轴显示出引擎采样数据的帧, 一个进程对应一个横向时间轴. Main 表示游戏逻辑和引擎代码运行的主线程. Remotery 表示分析器自身. Sound 表示混音和播放进程. 可以放大缩小 (用鼠标滚轮) 并选择某一帧来分析在 Frame Data view 中所展示的该帧的详细数据.
|
|
|
|
|
|
- 点击帧预览视图中的方块就会在下面给出这个帧的详细数据.
|
|
|
+ 
|
|
|
|
|
|
-帧数据
|
|
|
-: 帧数据显示了当前选择帧的详细数据表格. 这里可以看到引擎范围 (左边) 耗时(单位毫秒)和每个范围内的各个采样点 (中间). 右边是计数表格. 便于跟踪每帧 draw call 之类的数据.
|
|
|
+Frame Data
|
|
|
+: 帧数据显示了当前选择帧的所有详细数据表格. 这里还可以看到每个游戏循环耗费的毫秒数.
|
|
|
|
|
|

|
|
|
|
|
|
- 勾选视图中的复选框可以给出下面的曲线图.
|
|
|
+Global Properties
|
|
|
+: 全局属性视图显示了一组计数器. 可以方便地跟踪 draw call 数或者某一类型的组件数等.
|
|
|
|
|
|
-帧曲线图
|
|
|
-: 帧曲线图显示了你选择的特定数据项在每个采样帧中的耗时曲线图. X 轴是帧编号 Y 轴是耗时 (单位毫秒). 曲线颜色就是选择的数据项的颜色.
|
|
|
+ 
|
|
|
|
|
|
- 
|
|
|
|
|
|
-帧瀑布图
|
|
|
-: 帧瀑布图展示了一帧中引擎耗时的各个部分.
|
|
|
+### 资源分析器
|
|
|
+资源分析器可以检查并详细分析当前运行游戏的资源使用情况. 访问分析器的方法:
|
|
|
|
|
|
- 
|
|
|
+1. 在目标设备上启动游戏.
|
|
|
+2. 打开浏览器并访问 http://localhost:8002
|
|
|
|
|
|
-### 资源分析器
|
|
|
资源分析图表分为2个部分, 一个是集合层级关系, 显示了游戏中所有对象和组件实例, 另一个展示了加载的各种资源.
|
|
|
|
|
|

|
|
|
|
|
|
-集合视图
|
|
|
+Collection view
|
|
|
: 集合视图展示了游戏里各个集合下所实例化出的各个游戏对象和组件的层级关系. 便于查找实例化对象与其原型的对应关系.
|
|
|
|
|
|
-资源视图
|
|
|
+Resources view
|
|
|
: 资源视图展示了当前内存中加载的各种资源, 每个资源的空间占用和引用计数. 便于了解资源加载和优化内存使用.
|
|
|
|
|
|
## 编译报告
|
|
@@ -133,7 +136,6 @@ Android 分析器 (Android)
|
|
|
|
|
|
注意: 從 Android Studio 版本 4.1 開始, 也可以 [不用運行 Android Studio 而直接進行分析](https://developer.android.com/studio/profile/android-profiler.html#standalone-profilers).
|
|
|
|
|
|
-
|
|
|
图像 API 调试器 (Android)
|
|
|
: https://github.com/google/gapid
|
|
|
|