Javascript 奇怪的KinecticJ性能问题
我有一个kincetjs阶段,它经常更新,但实际上没有什么令人难以置信的——大约每2-5秒更新一次。此阶段包含约50-200个图像对象:Javascript 奇怪的KinecticJ性能问题,javascript,html,kineticjs,Javascript,Html,Kineticjs,我有一个kincetjs阶段,它经常更新,但实际上没有什么令人难以置信的——大约每2-5秒更新一次。此阶段包含约50-200个图像对象: _renderDices: function() { var dt0 = (new Date()).getTime(); this.diceLayer.removeChildren(); this.diceLayer.clear(); var dt3 = (new Date()).getTime(); for ( var j = 0
_renderDices: function() {
var dt0 = (new Date()).getTime();
this.diceLayer.removeChildren();
this.diceLayer.clear();
var dt3 = (new Date()).getTime();
for ( var j = 0 ; j < this.imagesCount; j++) {
var image = new Kinetic.Image({
x: this.images[j].X,
y: this.images[j].Y,
image: this.images[j].imageObj,
width: this.width ,
height: this.height,
listening: false
});
this.diceLayer.add(image);
}
var dt2 = (new Date()).getTime();
this.diceLayer.draw();
var dt1 = (new Date()).getTime();
console.log("renderTime " + (dt1 - dt0 ) + " ms, drawTime: " + (dt1 - dt2) + " ms , clearTime: " + (dt3-dt0)+"ms children=" + this.diceLayer.children.length);
},
\u呈现:函数(){
var dt0=(新日期()).getTime();
this.diceLayer.removeChildren();
这个.dicellayer.clear();
var dt3=(新日期()).getTime();
对于(var j=0;j
但渲染性能很快(在2-3k迭代之后)从5ms下降到1000-2000msg。
我已经测试了chrome和firefox,看起来像是GC问题,但我不确定。可能存在另一种可能性,生成带有图像的舞台-我有大约20个不同的图像(50x50-不是很大)和50-200个投影
但无论如何,我不能相信kinectjs在如此少量的对象上会如此糟糕——可能是我做错了什么,我的对象没有正确清理。
removeChildren
将从舞台上删除这些子对象,但会将这些被删除的子对象保留在内存中,以备以后重新添加它们
因此,您正在积累被移除的孩子,这最终会降低性能
如果以后不打算重用子对象,请改用
destroyChildren
。renderTime 8 ms,drawTime:4 ms,clearTime:1ms children=85 MapView.js:839-已经5分钟了:)