javascript 循环速度 for loop || while loop

  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给我...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值