javascript 性能测试系列:循环反转的效果

javascript 性能测试系列:循环反转的效果
循环反转示例:

   for ( var  i  =   0 ;i < data.length;i ++ ){
    
// .
  }
  
// 反转后代码
  for ( var  i  =  data.length - 1 ;i >= 0 ;i -- ){
    
// .
  }

这类优化的作用是明显的,但是具体有多大作用呢?

用一个长度为100 000 的数组测试一下:
515/313
500/313
516/312
516/328
516/328

可见,循环反转后,只需要原来3/5的时间.
但是,这种东西到底有多大价值?FF上200次循环仅需要1毫秒的时间.所以,个人认为,只要循环的内容不是太长,使用不算非常频繁,那么没有太大必要.
加入循环的长度需要通过函数取得,且不变,那么,反转的效率还是可观的,在IE上,函数调用消耗是普通操作的十多倍.

测试代码:
var  incTime  =   0 ;
var  decTime  =   0 ;
var  inc  =   0 ;
var  data  =   new  Array( 10 * 10000 );
// while(inc++<50)
{
  
var  t1  =   new  Date();
  
for ( var  i  =   0 ;i < data.length;i ++ ){
  }
  
var  t2  =   new  Date();
  
for ( var  i  =  data.length - 1 ;i >= 0 ;i -- ){
  }
  
var  t3  =   new  Date();
  incTime
+= (t2 - t1);
  decTime
+= (t3 - t2);
}

prompt(
" incTime/decTime " ,incTime  + ' / ' + decTime)


你可能感兴趣的:(javascript 性能测试系列:循环反转的效果)