您的位置:首页 > Web前端 > JavaScript

javascript 循环速度 for loop || while loop

2007-12-11 11:51 686 查看
  javascript做为客户端的脚本语言,一般来说都是速度是第一.要求速度就要看怎样才会让速度最快.

  循环基本上所有语言中都有的,也是最常用的,它的体现,基本能代表速度的体现.

  javascript中基本分2种循环:for循环 while循环

  for循环分为3种:for ++;for --;for in

  while循环分为2种(do-while语句不考虑):while ++;while --

  到底哪个快些?

  随便写几个测试语句,基本就能比较出最快的循环是哪个.

  得出结论:for -- 和 while -- 应该是最快的,两者的速度差不多,经过多次试验,还是对比不出哪个快些;有知道内部详               细实现的请联系我,谢谢啦.

                   for in 最慢,总以为最简单的最快,试过后才知道.......for in 实在太慢了,令人伤心啊

  step 1 : for 循环:


<script type="text/javascript">




/**//**


 *test for ++ loop;for -- loop;for in loop


 *which one is the fastest one


 *


 *by sun 20071211


 */


 var arrLength = window.prompt("input a number for loop count",100000);




 document.write("loop count : "+arrLength+"<br/>");




 var tempArr = new Array();


 var tempValue;


 var arrEndPosition = arrLength - 1;




 //timer


 var startTime;


 var endTime;




 //fill




 for(var i = arrEndPosition ; i >= 0 ; i--)...{


  tempArr.push(i);


 }




 //for ++ loop


 startTime = new Date().getTime();




 for(var i = 0 ; i < arrLength ; i++)...{


  tempValue = tempArr[i];


 }


 endTime = new Date().getTime();


 document.write("for ++ time : "+(endTime-startTime));


 


 document.write("<br/>"); 




 //for -- loop


 startTime = new Date().getTime();




 for(var i = arrEndPosition ; i >= 0 ; i--)...{


  tempValue = tempArr[i];


 }


 endTime = new Date().getTime();


 document.write("for -- time : "+(endTime-startTime));


 


 document.write("<br/>"); 




 //for in loop


 startTime = new Date().getTime();




 for(var i in tempArr)...{


  tempValue = tempArr[i];


 }


 endTime = new Date().getTime();


 document.write("for in time : "+(endTime-startTime));


</script>

  测试结果 速度: for -- < for ++ < for in(最慢) 

  step 2 : while 循环:


<script type="text/javascript">




/**//**


 *test while ++ loop;while -- loop


 *


 *by sun 20071211


 */


 var arrLength = window.prompt("input a number for loop count",100000);




 document.write("loop count : "+arrLength+"<br/>"); 




 var tempArr = new Array();


 var tempValue;


 var arrEndPosition = arrLength - 1;




 //timer


 var startTime;


 var endTime;




 //fill




 for(var i = arrEndPosition ; i >= 0 ; i--)...{


  tempArr.push(i);


 }




 //while ++ loop


 var i = 0;


 startTime = new Date().getTime();




 while(i < arrLength)...{


  tempValue = tempArr[i];


  i++;


 }


 endTime = new Date().getTime();


 document.write("while ++ time : "+(endTime-startTime));


 


 document.write("<br/>");




 //while -- loop


 startTime = new Date().getTime();


 var i = arrEndPosition;




 while(i >= 0)...{


  tempValue = tempArr[i];


  i--;


 }


 endTime = new Date().getTime();


 document.write("while -- time : "+(endTime-startTime));


</script>

  测试结果 速度: while -- < while ++

  step 3 : 最终测试 最快for vs 最快while


<script type="text/javascript">




/**//**


 *test for -- loop;while -- loop


 *


 *by sun 20071211


 */


 var arrLength = window.prompt("input a number for loop count",100000);




 document.write("loop count : "+arrLength+"<br/>");




 var tempArr = new Array();


 var tempValue;


 var arrEndPosition = arrLength - 1;




 //timer


 var startTime;


 var endTime;




 //fill




 for(var i = arrEndPosition ; i >= 0 ; i--)...{


  tempArr.push(i);


 }




 document.write("<strong>for -- loop first</strong><br/>");


 


 //for -- loop


 startTime = new Date().getTime();




 for(var i = arrEndPosition ; i >= 0 ; i--)...{


  tempValue = tempArr[i];


 }


 endTime = new Date().getTime();


 document.write("for -- time : "+(endTime-startTime));


 


 document.write("<br/>");




 //while -- loop


 startTime = new Date().getTime();


 var i = arrEndPosition;




 while(i >= 0)...{


  tempValue = tempArr[i];


  i--;


 }


 endTime = new Date().getTime();


 document.write("while -- time : "+(endTime-startTime));


 


 document.write("<br/>");




 document.write("<strong>while -- loop first</strong><br/>");




 //while -- loop


 startTime = new Date().getTime();


 var i = arrEndPosition;




 while(i >= 0)...{


  tempValue = tempArr[i];


  i--;


 }


 endTime = new Date().getTime();


 document.write("while -- time : "+(endTime-startTime));


 


 document.write("<br/>");




 //for -- loop


 startTime = new Date().getTime();




 for(var i = arrEndPosition ; i >= 0 ; i--)...{


  tempValue = tempArr[i];


 }


 endTime = new Date().getTime();


 document.write("for -- time : "+(endTime-startTime));




 document.write("<br/>");


</script>

  想自己测试的...可以拿我的脚本去测试

  觉得我脚本有什么问题的...email给我...
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息