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