隨筆-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 金大為 閱讀(929) 評論(0)  編輯  收藏 所屬分類: JavaScript
          主站蜘蛛池模板: 淮安市| 嵊泗县| 石河子市| 和林格尔县| 丰城市| 三都| 石家庄市| 西峡县| 平罗县| 乌拉特后旗| 漯河市| 沙洋县| 安岳县| 甘洛县| 忻城县| 枞阳县| 津南区| 雷波县| 三明市| 新平| 固镇县| 澄江县| 文化| 邵阳市| 安新县| 绩溪县| 咸丰县| 永善县| 祁连县| 瑞昌市| 册亨县| 平利县| 大同县| 缙云县| 瑞安市| 丰城市| 通榆县| 霍林郭勒市| 岳池县| 布拖县| 永丰县|