前幾天無意中看到一個網友blog上關于這個循環效率的問題,說要盡量避免使用。
有點害怕,我在
JSI中可是用了不少,呵呵。
測試一下,負擔終于可以放下來了:
測試對象:
一個對象模擬map,測試for in 循環
兩個數組,測試for(;;)循環
連續4次運行時間比。
957/1278;955/1357;1014/1282;968/1392
明顯,要實現類似map的功能,還是for in 快點。上面的數據是ff2上的結果,ie7上也差不多,差距更小一點。
測試代碼:
function C(i){
return i<62?
String.fromCharCode(i+=
i<26?65
:i<52?71//97-26
:-4//48-26-26
)
:i<63?'_'
:i<64?'$'
:C(i>>6)+C(i&63)
}
var map = {};
var arr1 = [];
var arr2 = [];
for(var i = 0;i<1000;i++){
var c = C(i);
map[c] = i;
arr1.push(c);
arr2.push(i);
}
var i = 0;
var mapTime = 0;
var arrTime = 0;
var inc = 0
while(inc++<500){
var t1 = new Date();
for(var n in map){
n = map[n];
}
var t2 = new Date();
for(var j = 0;j<1000;j++){
n =arr1[j];
n =arr2[j];
}
var t3 = new Date();
mapTime+=(t2-t1);
arrTime+=(t3-t2);
}
prompt("mapTime/arrTime",mapTime +'/'+arrTime)
posted on 2007-05-27 17:18
金大為 閱讀(1500)
評論(13) 編輯 收藏 所屬分類:
JavaScript