把函数包含在内部又怎样呢?如下。
我靠,竟然比调用外部函数还要慢!达到19秒。
当然了,偶谈论的是多次试验的平均值。
不用函数调用平均7秒。毫无疑问,这个结果太残酷了,对偶等结构化的鼓吹者无疑是当头一棒。看来要平衡性能和开发进程确实不容易。begin=new Date();function A1(){  function A2(){
var j;
for(j=0;j<5;j++){
k=1;
}
  }
var j,k=9; for (var i=0;i<100000;i++){ //*********** 第一部分  ************* A2();//调用外部函数,偶的机器要花16秒 //********************************** //*********** 第二部分  **************
//for(j=0;j<5;j++){//内部同样的循环,外加一个判断式,耗时7秒
// k=1;
//}
//if(k<0) j=9; //********************************** }
}A1();
end=new Date();
document.write(end.getTime()-begin.getTime());

解决方案 »

  1.   

    如果你的循环很小
    for(i=0;i<5;i++)a(i);
    那么改写成
    a(0)
    a(1)
    a(2)
    a(3)
    a(4)
    效率会提高;
    如果你的循环很大,那么把i++改写成++i,也会对你的效率有所提高。
      

  2.   

    对于A2(),你应该知道函数的调用是一个压栈和退栈的过程,对于你100k茨的调用当然很慢,而直接使用
    //for(j=0;j<5;j++){//内部同样的循环,外加一个判断式,耗时7秒
    // k=1;
    //}
    //if(k<0) j=9;
    也就当然快了。
      

  3.   

    这个试验最初的目的是为了减少亢余计算,如下:
    function Some(sMode){
      for(i=0;i<10000;i++){    Main Part Staments Here
        
        arrayResults[i]=something;
        if(sMode=='mode2')arrayResults[i]=an additional operate statement here;
      }
      return arrayResults;
    }很显然是否附加对结果集的操作实际只需判断一次,但是在这里却被按循环次数执行。
    倘换个方式,完整地书写主代码两次,效率会提高。但是似乎不科学,谁也不赞成重复代码啊,若主代码段较长的话,事情更讨厌。
      

  4.   

    我为什么要介意多写几行代码?
    不就是copy+paste么?