我在一些流行的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构建的相对较慢的移动应用程序的性能。我的意思是,尽可能重复使用现有对象会对性能产生明显影响吗?
这是一个理论问题,我知道如果我想加快我的程序,我需要找到我的代码中的瓶颈并优化它,而不是通常对性能进行理论化。
答案 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元素仍可提高性能。