Javascript 对于这些$each循环,什么更快/更高效/更好?
我有一个Javascript对象,如下所示:Javascript 对于这些$each循环,什么更快/更高效/更好?,javascript,jquery,performance,Javascript,Jquery,Performance,我有一个Javascript对象,如下所示: var a = { b: [1,2,3,4,5,6,7,8,9], c: [10,11,12,13,14,15] } 要在两个数组中循环(我想循环每个值!),我使用$。每个,但我可以这样做: // Option A: $.each(a, function(i, d){ $.each(d, function(j, e){ console.log(e); } }); 还是这个 // Option B: $.each(a.b,
var a = {
b: [1,2,3,4,5,6,7,8,9],
c: [10,11,12,13,14,15]
}
要在两个数组中循环(我想循环每个值!),我使用$。每个,但我可以这样做:
// Option A:
$.each(a, function(i, d){
$.each(d, function(j, e){
console.log(e);
}
});
还是这个
// Option B:
$.each(a.b, function(k, f){
console.log(f)
})
$.each(a.c, function(l, g){
console.log(g)
})
两者产生的输出完全相同,但这两个版本中哪一个更快/更高效/更好
有什么区别吗
或者有没有更快/更有效/更好的方法(没有$。每个)?最有效的方法是使用一个简单的本地for
循环。根本不要使用jQuery。如果您真正关心的是速度,那么就使用javascript自己的for循环。
对于你的答案,我认为选项b会更快没有什么能比得上:
var i=0, arr=a.b, len=arr.length;
for(; i<len; i++ ) { console.log(arr[i]) } ;
var i=0,arr=a.b,len=arr.length;
for(;i使用某种类型的每一个总是比for循环慢,这是不对的。SM和V8可以很好地进行内联
只要您没有为他们破坏它,就可以运行利用这一事实的自定义实现
话虽如此,jQuery$。每个都没有利用这一事实,而且速度很慢。避免在性能敏感的情况下使用
至于你的问题,我希望第二个在JIT中会稍微快一点,因为它避免了反射,并且使用了每个现代引擎都能利用的静态属性访问
+1.OP-如果你真的想看到性能的差异,我明白了,for
循环更快。但是当涉及到for
内部for
循环时,这并没有改变任何东西。此外,我知道我可以测试自己,但如果有人已经知道答案,那就不需要测试了吗?@GerardWesterhof<代码< > <代码>(或<代码> )要比<代码>前文快,<<代码> <代码> > <>代码> > <<代码>前缀/> >内<代码>前缀。但是,你需要考虑变量名冲突(除非你有<代码>让对你可用).我感觉这个问题以前已经被回答过了…“没有什么能打败”,现在不是真的了,是吗?:-)好的,jsperf链接表明基本的for循环已经走在前面了。我的意思是,任何构建在基本for循环之上的构造都会变慢。是的,构建在for循环之上的东西会变慢,但是当你说“无”时,你必须小心:Psum=0;总和+=1;总和+=2;总和+=3代码>etc会更快。。具体来说,(n*(n+1))/2
会更快。