前幾天無(wú)意中看到一個(gè)網(wǎng)友blog上關(guān)于這個(gè)循環(huán)效率的問(wèn)題,說(shuō)要盡量避免使用。
有點(diǎn)害怕,我在
JSI中可是用了不少,呵呵。
測(cè)試一下,負(fù)擔(dān)終于可以放下來(lái)了:
測(cè)試對(duì)象:
一個(gè)對(duì)象模擬map,測(cè)試for in 循環(huán)
兩個(gè)數(shù)組,測(cè)試for(;;)循環(huán)
連續(xù)4次運(yùn)行時(shí)間比。
957/1278;955/1357;1014/1282;968/1392
明顯,要實(shí)現(xiàn)類似map的功能,還是for in 快點(diǎn)。上面的數(shù)據(jù)是ff2上的結(jié)果,ie7上也差不多,差距更小一點(diǎn)。
測(cè)試代碼:
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)
評(píng)論(13) 編輯 收藏 所屬分類:
JavaScript