-1

性能上有区别吗

for(x=0;x<data.list.length;x++){
//...
}

对比

var dList=data.list;

for(x=0;x<dList.length;x++){
//...
}

非常感谢

4

3 回答 3

1

微不足道,大部分时间不用担心。最佳实践说做这样的事情:

for(var x = 0, len = data.list.length; x < len; x++){
   //...
}

如果你倒数到 0,那就更好了,但这是一个不同的问题。

于 2013-09-27T23:03:58.773 回答
0

试一试吧。

第一种情况:

var start = new Date();
var data = {};
data.list = Array(100000);
for(x=0;x<data.list.length;x++){
    data.list[x] = Math.sqrt(Math.pow(x, 7));
}
var finish = new Date();
console.log(finish - start + "ms"); //245ms

第二种情况:

var start = new Date();
var data = {};
data.list = Array(100000);
var dList = data.list
for(x=0;x<dList.length;x++){
    dList[x] = Math.sqrt(Math.pow(x, 7));
}
var finish = new Date();
console.log(finish - start + "ms"); //251ms

但还有另一种提高性能的方法:

var start = new Date();
var data = {};
data.list = Array(100000);
for(x = data.list.length; x--; ){
    data.list[x] = Math.sqrt(Math.pow(x, 7));
}
var finish = new Date();
console.log(finish - start + "ms"); //199ms

x--返回递减数字,当它达到零时,其布尔值变为假,因此循环停止。这工作得更快,因为与零的比较比与任何其他数字的比较执行得快得多。

于 2013-09-27T23:16:14.260 回答
0

您将在此处实际看到的唯一性能增强是存储长度值,因此无需在每次迭代时访问您的 data.list 进行比较。

int size = data.list.length;

for(x=0x<size;x++){
    //...
} 

正如其他人所提到的,这对于 99.99999% 的情况来说是极其微不足道的,甚至在命名空间是一个问题时也不赞成。一般的经验法则是越容易阅读,你可能就越好。

于 2013-09-27T23:11:31.080 回答