性能上有区别吗
for(x=0;x<data.list.length;x++){
//...
}
对比
var dList=data.list;
for(x=0;x<dList.length;x++){
//...
}
非常感谢
性能上有区别吗
for(x=0;x<data.list.length;x++){
//...
}
对比
var dList=data.list;
for(x=0;x<dList.length;x++){
//...
}
非常感谢
微不足道,大部分时间不用担心。最佳实践说做这样的事情:
for(var x = 0, len = data.list.length; x < len; x++){
//...
}
如果你倒数到 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--
返回递减数字,当它达到零时,其布尔值变为假,因此循环停止。这工作得更快,因为与零的比较比与任何其他数字的比较执行得快得多。
您将在此处实际看到的唯一性能增强是存储长度值,因此无需在每次迭代时访问您的 data.list 进行比较。
int size = data.list.length;
for(x=0x<size;x++){
//...
}
正如其他人所提到的,这对于 99.99999% 的情况来说是极其微不足道的,甚至在命名空间是一个问题时也不赞成。一般的经验法则是越容易阅读,你可能就越好。