我弄了个简单的测试工程,点一下按钮会创建1000个结点,代码非常简单:
doTest: function() {
var tm = Date.now();
for (var i = 0; i < 1000; ++i) {
var node = new cc.Node();
node.parent = this.node;
}
tm = Date.now() - tm
this.lbTime.string = '时间:' + tm + '毫秒';
this.lbCount.string = '子结点数: ' + this.node.children.length;
},
然后用Web版跑了下测试,如图:
测试结果非常理想,而且我发现点多几下,后面会更快,大概是引擎内部有做一些缓存之类的。
后面是我跑了原生版的测试,结果就坑爹了:
每一次点击创建1000个结点花了243毫秒。更坑爹的在后面,我再创建1000个结点,这次的时间竟然是:
看起来效率和父结点的子结点数成正比,子结点越多,创建结点越慢,我后面再点了几下,果然印证了结果:
原生版的创建结点值得好好优化。