解读 Cocos Creator 引擎:让实例化快 50% 的原理,“拖节点”性能会更好吗?

其实这点损耗完全可以忽略不记。。只要不是频繁的getChild 没啥太大区别

3赞

辛苦了。
mark一下。

instantiate无非就是通过json(prefab)创建node
我们用vscode打开prefab可以看到是一个数组。而不是树状结构。node的parent属性为一个int值,其实就是数组的index。通过拖拽到MyClass的节点。其实也就是记录了这个index(猜测)。getChild还需要foreach 比较字符串。
所以要求效率的场景不建议大量getChild

正式打包是没有的哦

关于性能的帖子,必须顶一下

以前经常用getChild,看来要改掉这习惯了:grin:

1赞

感谢楼主的测试数据
并不要脸的贴个链接

1赞

挺有深度的分析。理论上我们优化后的实例化,性能会比开发者手动用 API 手动复制节点更快,因为手动调用 API 访问的都是公有 API,公有 API 没办法批量初始化。
实际上 Creator 的黑科技还不少,有兴趣还可以看看引擎 master 分支上新版的反序列化代码。

11赞

很有深度啊

讲的很详细

mack一下

我对反序列话这块比较好奇,可以具体分享一下这块如何实现的吗?

1赞

这篇文章很有深度,可以,赞。

好————

麻麻麻MMM克

大佬给力!受益良多!!!

讲的很详细,感谢分享

那么有没有可能,让cocos在构建的时候,直接把perfab解析成jit的实例化函数.让构建的时间多花点.游戏运行的时候,就每一次都是最快的实例化了.@jare

3赞

序列化与反序列化是不可避免的,jit优化把多次序列化过程优化成了1次。