哪个在for循环中更快,使用temp变量或索引访问值
which is faster in a for loop, accessing values using temp variable or the index?
我正在尝试优化一些knockout js代码,我想知道哪个会更快,即使用索引器访问变量:
for (var i = 0; i < data.length; i++) {
data[i].MediaID = ko.observable(data[i].MediaID);
data[i].MediaName= ko.observable(data[i].MediaName);
data[i].MediaTypeID= ko.observable(data[i].MediaTypeID);
}
或声明一个临时变量。
for (var i = 0; i < data.length; i++) {
var temp = data[i];
temp.MediaID = ko.observable(temp.MediaID);
temp.MediaName= ko.observable(temp.MediaName);
temp.MediaTypeID= ko.observable(temp.MediaTypeID);
}
使用temp-variable访问应该会稍微快一些,因为您不需要在数组中查找元素。
但是,增益将是最小的
compare
data.a.b.c.d.e.f.g.MediaID = ko.observable(data.a.b.c.d.e.f.g.MediaID);
data.a.b.c.d.e.f.g.MediaName= ko.observable(data.a.b.c.d.e.f.g.MediaName);
data.a.b.c.d.e.f.g.MediaTypeID= ko.observable(data.a.b.c.d.e.f.g.MediaTypeID);
和
var temp =data.a.b.c.d.e.f.g;
temp.MediaID = ko.observable(temp.MediaID);
temp.MediaName= ko.observable(temp.MediaName);
temp.MediaTypeID= ko.observable(temp.MediaTypeID);
你不需要查找相同的东西那么多次
如果你想要更快,你也应该缓存data.length
for(var i = 0, len = data.length; i < len; i++)...
如果您担心性能,请不要使用数组。循环的长度。它不是一个值,它是一个内部函数,每次被访问时都重新计算数组的总条目,更好的是:
var total = items.length;
for(i=0; i < total; i++){
//stuff
}
现在对于你的具体用例,我不知道你正在使用的框架,但如果你正在使用jQuery和/或下划线,而不是循环,你可以使用地图函数之一:http://api.jquery.com/jQuery.map/http://underscorejs.org/地图
相关文章:
- 将函数的上下文应用于javascript变量
- 无法导出函数expressjs/requestjs中的变量
- 函数参数中的数据与指定变量之间的任何性能差异
- 将PHP变量传递给jQuery时遇到问题
- 如何通过ajax刷新JSF填充的javascript变量
- 参数变量出现ngTable指令问题
- 通过javascript重定向html传递php变量
- 将jsp文件下拉列表中的选定项分配给一个java变量(比如String selection)
- 全局变量和全局对象的属性之间有什么区别吗
- 如何在Bootstrap Modal中为动态点击生成的变量设置jade属性
- 值对象在某个变量发生更改后发生更改
- Javascript变量赋值|
- AngularJS-在JSON选择器中使用变量名
- Javascript计数器变量未显示正确的值
- delete关键字在全局变量上的不同行为
- 如何在php变量中嵌入JQuery代码
- ReactJS映射:如何仅在url变量不为空时呈现html链接
- 在javascript函数中设置全局变量
- 将变量传递给外部Javascript
- 哪个在for循环中更快,使用temp变量或索引访问值