隨筆-57  評論-129  文章-0  trackbacks-0
          一直都認為,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 金大為 閱讀(928) 評論(0)  編輯  收藏 所屬分類: JavaScript
          主站蜘蛛池模板: 中阳县| 大港区| 庆阳市| 徐州市| 辽阳县| 长顺县| 苗栗县| 霸州市| 定襄县| 乌恰县| 绥江县| 临沂市| 九江县| 榕江县| 灵璧县| 敖汉旗| 靖西县| 抚顺县| 崇信县| 黔西县| 凤庆县| 同江市| 哈密市| 江都市| 乐业县| 红桥区| 宁都县| 常宁市| 哈巴河县| 古丈县| 酉阳| 太保市| 托克逊县| 丰镇市| 陵川县| 黄山市| 石狮市| 南乐县| 黄梅县| 长汀县| 和平区|