之间在性能方面是否存在差异
for(x=0;x<data.list.length;x++){
//...
}
vs
var dList=data.list;
for(x=0;x<dList.length;x++){
//...
}
非常感谢
答案 0 :(得分:1)
琐碎不用担心大部分时间。最佳实践说做这样的事情:
for(var x = 0, len = data.list.length; x < len; x++){
//...
}
如果你倒数到0就更好了,但这是一个不同的问题。
答案 1 :(得分:0)
您在这里实际看到的唯一性能增强是存储长度值,因此无需在每次迭代时进入data.list进行比较。
int size = data.list.length;
for(x=0x<size;x++){
//...
}
正如其他人所说,对于99.99999%的案例来说,这是非常微不足道的,甚至在名称空间成为问题时也不赞成。一般的经验法则是你越容易阅读越好的东西。
答案 2 :(得分: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--
返回递减的数字,当它达到零时,其布尔值变为false,因此循环停止。
这比较快,因为与零比较比与任何其他数字相比要快得多。