实验用品编辑器说明文档

实验用品编辑器说明文档


器材加载数据记录与分析

<table> <thead> <tr> <th style="text-align: left;">最后修订日期</th> <th style="text-align: left;">2024-5-30</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.0.0</td> <td style="text-align: left;">创建文档</td> </tr> </tbody> </table> <h3>数据记录</h3> <p>正常加载测试 <strong>TanHuangCeLiJiElement</strong> Start.lua 246K Node.json 396K</p> <p>总耗时 1880 Lua解析初始化 1030 Node.json解析 540 CreateLabObjectEntry.Init() 器材对象创建 98</p> <p>&gt; 参考图片 <img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=8738bdd5e34b24724a754a4e08d3e51d&amp;amp;file=file.png" alt="" /></p> <p>lua代码初始化注释测试 <strong>TanHuangCeLiJiElement</strong> 总耗时 1124 Lua解析 126 Node.json解析 566 CreateLabObjectEntry.Init() 器材对象创建 93</p> <p>&gt; 参考图片 <img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=c5c80cf4f42b50bcd7944f684430e481&amp;amp;file=file.png" alt="" /></p> <p>正常加载测试 <strong>JiuJingDengElement</strong> Start.lua 26K Node.json 58K</p> <p>总耗时 2327 Lua解析初始化 1577 Node.json解析 400 CreateLabObjectEntry.Init() 器材对象创建 91</p> <p>&gt; 参考图片 <img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=1928ad881ce4bd26c6a96f1073e4d1c3&amp;amp;file=file.png" alt="" /></p> <p>lua代码初始化注释测试 <strong>JiuJingDengElement</strong> 总耗时 739 Lua解析 8 Node.json解析 384 CreateLabObjectEntry.Init() 器材对象创建 93</p> <p>&gt; 参考图片 <img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=a0bd53e8882fac22e6bcfc83ca28f5f8&amp;amp;file=file.png" alt="" /></p> <h3>对比分析</h3> <table> <thead> <tr> <th style="text-align: left;">组件名称</th> <th style="text-align: left;">测试类型</th> <th style="text-align: left;">Start.lua大小</th> <th style="text-align: left;">Node.json大小</th> <th style="text-align: left;">总耗时</th> <th style="text-align: left;">Lua初始化</th> <th style="text-align: left;">Lua耗时占比</th> <th style="text-align: left;">Node.json解析</th> <th style="text-align: left;">Node.json耗时占比</th> <th style="text-align: left;">反射相关</th> </tr> </thead> <tbody> <tr> <td style="text-align: left;">TanHuangCeLiJiElement</td> <td style="text-align: left;">正常</td> <td style="text-align: left;">246K</td> <td style="text-align: left;">396K</td> <td style="text-align: left;">1880</td> <td style="text-align: left;">1030</td> <td style="text-align: left;">55%</td> <td style="text-align: left;">540</td> <td style="text-align: left;">29%</td> <td style="text-align: left;">98ms</td> </tr> <tr> <td style="text-align: left;">TanHuangCeLiJiElement</td> <td style="text-align: left;">lua初始化注释</td> <td style="text-align: left;">246K</td> <td style="text-align: left;">396K</td> <td style="text-align: left;">1124</td> <td style="text-align: left;">126</td> <td style="text-align: left;">11%</td> <td style="text-align: left;">566</td> <td style="text-align: left;">50%</td> <td style="text-align: left;">93ms</td> </tr> <tr> <td style="text-align: left;">JiuJingDengElement</td> <td style="text-align: left;">正常</td> <td style="text-align: left;">26K</td> <td style="text-align: left;">58K</td> <td style="text-align: left;">2327</td> <td style="text-align: left;">1577</td> <td style="text-align: left;">68%</td> <td style="text-align: left;">400</td> <td style="text-align: left;">17%</td> <td style="text-align: left;">91ms</td> </tr> <tr> <td style="text-align: left;">JiuJingDengElement</td> <td style="text-align: left;">lua初始化注释</td> <td style="text-align: left;">26K</td> <td style="text-align: left;">58K</td> <td style="text-align: left;">739</td> <td style="text-align: left;">8</td> <td style="text-align: left;">1%</td> <td style="text-align: left;">384</td> <td style="text-align: left;">52%</td> <td style="text-align: left;">93ms</td> </tr> </tbody> </table> <p>&gt; 备注:反射相关耗时由 CreateLabObjectEntry.Init()产生 &gt; 时间单位为ms(毫秒)</p> <h3>优化思路</h3> <ol> <li>json的解析可以考虑用二进制保存和解析,理论上耗时会有大幅优化,参考数据:耗时为原来的1/8,GC和保存大小为原来的1/2。</li> <li>二进制解析可以作为新增的解析方式,代码入侵较低,新资源储存额外处理即可,也能支持老器材、颗粒等数据。</li> <li>除node.json 文件外还有 EditorComponentsInfo.json、InteractAbilityConfig.json、Menu.json、Meta.json、RegionConfig.json等,有时间也可考虑用二进制处理。</li> <li>Lua代码部分耗时主要集中在组件添加,配置加载(json加载)等。这块可以考虑使用时加载使用(Lazy),避免初始化耗时过高。</li> <li>资源优化,在分析耗时时,发现AB包比较大,以TanHuangCeLiJiElementModel为例,贴图11张,4个Fbx文件(动画文件),21个obj文件,总AB包大小8.12M,这块优化空间应该是较大的。</li> <li>打包策略,避免无用和冗余资源。</li> </ol> <p><img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=933fe2e0c5bf271979bb9d77fd5b4cec&amp;amp;file=file.png" alt="" /></p> <p><img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=401874c2ee9ea75dcbf7297c16626eee&amp;amp;file=file.png" alt="" /></p> <p><img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=f89293596a2596fb2de764dfdce86857&amp;amp;file=file.png" alt="" /></p>

页面列表

ITEM_HTML