循環反轉示例:
for(var i = 0;i<data.length;i++){
//
.
}
//反轉后代碼
for(var i = data.length-1;i>=0;i--){
//
.
}
這類優化的作用是明顯的,但是具體有多大作用呢?
用一個長度為100 000 的數組測試一下:
515/313
500/313
516/312
516/328
516/328
可見,循環反轉后,只需要原來3/5的時間.
但是,這種東西到底有多大價值?FF上200次循環僅需要1毫秒的時間.所以,個人認為,只要循環的內容不是太長,使用不算非常頻繁,那么沒有太大必要.
加入循環的長度需要通過函數取得,且不變,那么,反轉的效率還是可觀的,在IE上,函數調用消耗是普通操作的十多倍.
測試代碼:
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)
posted on 2007-05-31 12:30
金大為 閱讀(916)
評論(5) 編輯 收藏 所屬分類:
JavaScript