实验用品编辑器说明文档

实验用品编辑器说明文档


器材加载优化-JSON优化

<table> <thead> <tr> <th style="text-align: left;">最后修订日期</th> <th style="text-align: left;">2024-6-19</th> </tr> </thead> <tbody> <tr> <td style="text-align: left;">作者</td> <td style="text-align: left;">刘备</td> </tr> <tr> <td style="text-align: left;">V1.1.0</td> <td style="text-align: left;">创建文档</td> </tr> </tbody> </table> <h3>优化目的</h3> <p>减轻器材加载时出现卡顿问题</p> <h3>优化目标</h3> <p>1.在不破坏现有流程的情况下,将部分Json格式文件保存成二进制,并在运行时加载 2.原有的Json格式仍然保留,方便维护与查看,运行时使用二进制数据</p> <h3>优化方案</h3> <p>1.可以优化的内容之前分析过,主要是资源加载耗时过高、<strong>解析Json数据耗时高</strong>、Lua端逻辑问题 2.本次优化主要针对Json解析和分帧处理,以减少瞬时计算量过大,造成线程卡死的问题 3.要优化的Json文件,主要为:Node.json <img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=a31bbec3f8ec00130f983bdbccf312da&amp;amp;file=file.png" alt="" /> 4.改成使用MessagePack保存和加载二进制文件 以下为各种数据结构性能对比 <img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=da982a189506897d3b505ddf81bcfc98&amp;amp;file=file.png" alt="" /> 以下是实际项目测试的对比数据 <a href="https://www.showdoc.com.cn/eleeditor/11233814884217638">https://www.showdoc.com.cn/eleeditor/11233814884217638</a> 5.要分帧处理的部分,资源加载、Json解析、Lua逻辑</p> <h3>优化对比数据</h3> <p>以下是<strong>整体加载耗时</strong>对比:</p> <table> <thead> <tr> <th style="text-align: left;">项目名称</th> <th style="text-align: left;">Json耗时 (ms)</th> <th style="text-align: left;">二进制耗时 (ms)</th> <th style="text-align: left;">耗时减少 (%)</th> </tr> </thead> <tbody> <tr> <td style="text-align: left;">LiuKongShiGuanJia</td> <td style="text-align: left;">806</td> <td style="text-align: left;">682</td> <td style="text-align: left;">15.38</td> </tr> <tr> <td style="text-align: left;">JiuJingDeng</td> <td style="text-align: left;">1596</td> <td style="text-align: left;">1322</td> <td style="text-align: left;">17.17</td> </tr> <tr> <td style="text-align: left;">TanHuangCeLiJi</td> <td style="text-align: left;">1108</td> <td style="text-align: left;">858</td> <td style="text-align: left;">22.56</td> </tr> <tr> <td style="text-align: left;">JinShuYaoChi</td> <td style="text-align: left;">1343</td> <td style="text-align: left;">1029</td> <td style="text-align: left;">23.37</td> </tr> <tr> <td style="text-align: left;">XiangPiSai</td> <td style="text-align: left;">789</td> <td style="text-align: left;">667</td> <td style="text-align: left;">15.46</td> </tr> </tbody> </table> <p>以下是Json与二进制 GC 对比:</p> <table> <thead> <tr> <th style="text-align: left;">项目名称</th> <th style="text-align: left;">Json GC (MB)</th> <th style="text-align: left;">二进制 GC (MB)</th> <th style="text-align: left;">GC 减少 (MB)</th> <th style="text-align: left;">GC 减少 (%)</th> </tr> </thead> <tbody> <tr> <td style="text-align: left;">LiuKongShiGuanJia</td> <td style="text-align: left;">2.7</td> <td style="text-align: left;">1.0</td> <td style="text-align: left;">1.7</td> <td style="text-align: left;">62.96%</td> </tr> <tr> <td style="text-align: left;">JiuJingDeng</td> <td style="text-align: left;">1.8</td> <td style="text-align: left;">0.4</td> <td style="text-align: left;">1.4</td> <td style="text-align: left;">77.78%</td> </tr> <tr> <td style="text-align: left;">TanHuangCeLiJi</td> <td style="text-align: left;">3.7</td> <td style="text-align: left;">0.5</td> <td style="text-align: left;">3.2</td> <td style="text-align: left;">86.49%</td> </tr> <tr> <td style="text-align: left;">JinShuYaoChi</td> <td style="text-align: left;">4.2</td> <td style="text-align: left;">0.8</td> <td style="text-align: left;">3.4</td> <td style="text-align: left;">80.95%</td> </tr> <tr> <td style="text-align: left;">XiangPiSai</td> <td style="text-align: left;">2.5</td> <td style="text-align: left;">0.45</td> <td style="text-align: left;">2.05</td> <td style="text-align: left;">82%</td> </tr> </tbody> </table> <p>&gt; 仅为Json和二进制GC对比,不是整个器材GC对比</p> <p>以下是Json与二进制 文件对比:</p> <table> <thead> <tr> <th style="text-align: left;">项目名称</th> <th style="text-align: left;">Json大小 (KB)</th> <th style="text-align: left;">二进制大小 (KB)</th> <th style="text-align: left;">大小减少 (KB)</th> <th style="text-align: left;">大小减少 (%)</th> </tr> </thead> <tbody> <tr> <td style="text-align: left;">LiuKongShiGuanJia</td> <td style="text-align: left;">119</td> <td style="text-align: left;">114</td> <td style="text-align: left;">5</td> <td style="text-align: left;">4.20%</td> </tr> <tr> <td style="text-align: left;">JiuJingDeng</td> <td style="text-align: left;">58</td> <td style="text-align: left;">51</td> <td style="text-align: left;">7</td> <td style="text-align: left;">12.07%</td> </tr> <tr> <td style="text-align: left;">TanHuangCeLiJi</td> <td style="text-align: left;">396</td> <td style="text-align: left;">74</td> <td style="text-align: left;">322</td> <td style="text-align: left;">81.31%</td> </tr> <tr> <td style="text-align: left;">JinShuYaoChi</td> <td style="text-align: left;">506</td> <td style="text-align: left;">125</td> <td style="text-align: left;">381</td> <td style="text-align: left;">75.30%</td> </tr> <tr> <td style="text-align: left;">XiangPiSai</td> <td style="text-align: left;">196</td> <td style="text-align: left;">58</td> <td style="text-align: left;">138</td> <td style="text-align: left;">70.41%</td> </tr> </tbody> </table> <p>&gt; 仅为Json和二进制文件对比,不是整个器材文件对比</p> <p>记录数据如下: &gt;测试数据均为打开debug模式,开启Profiler的Deep Profile,并且每次测试均是独立播放记录。</p> <p>LiuKongShiGuanJia 二进制 <img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=e27f0aada8ce86f724e878fa8b9853b3&amp;amp;file=file.png" alt="" /> LiuKongShiGuanJia Json <img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=78f5526cd9ee3784928e5485e61e8a99&amp;amp;file=file.png" alt="" /> JiuJingDeng 二进制 <img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=9db4a431d8b2f4ca9668df68d9778bfa&amp;amp;file=file.png" alt="" /> JiuJingDeng Json <img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=d8b0687296634ad4514f71d2db39147f&amp;amp;file=file.png" alt="" /> TanHuangCeLiJiElement 二进制 <img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=981ffd161c41c86797d1319674f5cbcb&amp;amp;file=file.png" alt="" /> TanHuangCeLiJiElement Json <img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=483c317ce926fd6cea891edc2d7ef4bd&amp;amp;file=file.png" alt="" /> JinShuYaoChi 二进制 <img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=6a184bce5a3a00475d3be65e97f66626&amp;amp;file=file.png" alt="" /> JinShuYaoChi Json <img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=f69a112c183fd6005f8511007336fb1a&amp;amp;file=file.png" alt="" /> XiangPiSai 二进制 <img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=b9a05658139c1fadba85d3a3792ad62d&amp;amp;file=file.png" alt="" /> XiangPiSai Json <img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=41d2b702b9364e4354e5eb47c7f5715d&amp;amp;file=file.png" alt="" /></p>

页面列表

ITEM_HTML