移动设备中javascript中对象创建的优化

时间:2012-03-14 16:45:59

标签: javascript performance mobile

我在一些流行的Javascript库中看到很多代码,这些代码经常创建新对象并放弃旧对象,就像这里(来自https://github.com/nefD/impact-tween):

if ( this.tweens.length > 0 ) {
    var currentTweens = [];
    for ( var i = 0; i < this.tweens.length; i++ ) {
        this.tweens[i].update();
        if ( !this.tweens[i].complete ) currentTweens.push(this.tweens[i]);
    }
this.tweens = currentTweens;
我向专家提出的问题是,这是否会阻碍使用Javascript构建的相对较慢的移动应用程序的性能。我的意思是,尽可能重复使用现有对象会对性能产生明显影响吗?

这是一个理论问题,我知道如果我想加快我的程序,我需要找到我的代码中的瓶颈并优化它,而不是通常对性能进行理论化。

2 个答案:

答案 0 :(得分:1)

如果可以的话,你应该重复使用DOM元素和JS对象。

创建和放弃不是低成本操作,而是在移动设备上处理器速度较慢且内存较少,您希望尽可能长时间地避免垃圾收集。

Estelle Weyl来自Velocity EU的演讲有一些幻灯片 - http://standardista.com/velocity/#slide1

答案 1 :(得分:0)

一般来说,瓶颈在于DOM。它比桌面浏览器慢10到100倍。

我经常看到没有移动版本的网站,这些网站在我的iPhone 3G上渲染了大约一秒钟。最后一个拥有400MHz CPU甚至一些GPU加速AFAIK。这不是网络延迟,我只是说我自己的WiFi。

重用DOM元素仍可提高性能。