for(var i = 0;i<data.length;i++){
//
.
}
//反轉(zhuǎn)后代碼
for(var i = data.length-1;i>=0;i--){
//
.
}
//

}
//反轉(zhuǎn)后代碼
for(var i = data.length-1;i>=0;i--){
//

}
這類優(yōu)化的作用是明顯的,但是具體有多大作用呢?
用一個長度為100 000 的數(shù)組測試一下:
515/313
500/313
516/312
516/328
516/328
可見,循環(huán)反轉(zhuǎn)后,只需要原來3/5的時間.
但是,這種東西到底有多大價值?FF上200次循環(huán)僅需要1毫秒的時間.所以,個人認(rèn)為,只要循環(huán)的內(nèi)容不是太長,使用不算非常頻繁,那么沒有太大必要.
加入循環(huán)的長度需要通過函數(shù)取得,且不變,那么,反轉(zhuǎn)的效率還是可觀的,在IE上,函數(shù)調(diào)用消耗是普通操作的十多倍.
測試代碼:
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)
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)