关于javascript for in 循环效率的疑惑

关于javascript for in 循环效率的疑惑
前几天无意中看到一个网友blog上关于这个循环效率的问题,说要尽量避免使用。
有点害怕,我在 JSI中可是用了不少,呵呵。
测试一下,负担终于可以放下来了:

测试对象:
一个对象模拟map,测试for in 循环
两个数组,测试for(;;)循环

连续4次运行时间比。
957/1278;955/1357;1014/1282;968/1392


明显,要实现类似map的功能,还是for in 快点。

上面的数据是ff2上的结果,ie7上也差不多,差距更小一点。

测试代码:
function  C(i){
  
return  i < 62 ?
    String.fromCharCode(i
+=
      i
< 26 ? 65
        :i
< 52 ? 71 // 97-26
          : - 4 // 48-26-26
    )
      :i
< 63 ? '_'
        :i
< 64 ? '$'
          :C(i
>> 6 ) + C(i & 63 )
}
var  map  =  {};
var  arr1  =  [];
var  arr2  =  [];

for ( var  i  =   0 ;i < 1000 ;i ++ ){
  
var  c  =  C(i);
  map[c] 
=  i;
  arr1.push(c);
  arr2.push(i);
}
var  i  =   0 ;
var  mapTime  =   0 ;
var  arrTime  =   0 ;
var  inc  =   0
while (inc ++< 500 ){
  
var  t1  =   new  Date();
  
for ( var  n  in  map){
    n 
=  map[n];
  }
  
var  t2  =   new  Date();
  
for ( var  j  =   0 ;j < 1000 ;j ++ ){
    n 
= arr1[j];
    n 
= arr2[j];
  }
  
var  t3  =   new  Date();
  mapTime
+= (t2 - t1);
  arrTime
+= (t3 - t2);
}

prompt(
" mapTime/arrTime " ,mapTime  + ' / ' + arrTime)


你可能感兴趣的:(关于javascript for in 循环效率的疑惑)