一直都認為,javascript的函數調用是一個相對耗時的操作。
開始
JSI的優化,這些問題現在必須認真考慮了,測試一把:
一個簡單的++操作,直接操作和函數內操作(注,函數參數對原始類型是值傳遞,所以這不會影響被傳入的變量,這里測試里面,兩類操作的行為是不一樣的)
FF2測試結果(callTime/opTime):
2871/2582
2919/2675
2734/2704
2953/2516
3732/3346
IE7測試結果:
3140/376
3173/327
3238/247
3265/235
3217/299
通過測試可見,函數調用的消耗基本可以忽略。每次調用時間僅為:3000/(200*1000*5) ==0.3毫秒 ,這個時間還包含函數內部的++操作
從示例可見,FF的函數調用消耗基本可以府略,IE雖然相當于十倍++類簡單操作,但依然不足以重視。
奇怪的是,第一次碰見ie的運行效率高于ff的情況。
測試代碼
var i = 0;
var callTime = 0;
var opTime = 0;
var inc = 0;
function plus(z){z++};
while(inc++<200){
var i=0;
var x = 1;
var t1 = new Date();
while(i++<1000){
plus(x);
plus(x);
plus(x);
plus(x);
plus(x);
}
var t2 = new Date();
while(i++<2000){
x++;
x++;
x++;
x++;
x++;
}
var t3 = new Date();
callTime+=(t2-t1);
opTime+=(t3-t2);
}
prompt("callTime/opTime",callTime +'/'+opTime)
posted on 2007-05-29 18:00
金大為 閱讀(926)
評論(0) 編輯 收藏 所屬分類:
JavaScript