隨筆-57  評論-129  文章-0  trackbacks-0
          一直都認(rèn)為,javascript的函數(shù)調(diào)用是一個(gè)相對耗時(shí)的操作。
          開始JSI的優(yōu)化,這些問題現(xiàn)在必須認(rèn)真考慮了,測試一把:

          一個(gè)簡單的++操作,直接操作和函數(shù)內(nèi)操作(注,函數(shù)參數(shù)對原始類型是值傳遞,所以這不會(huì)影響被傳入的變量,這里測試?yán)锩?,兩類操作的行為是不一樣的?br>
          FF2測試結(jié)果(callTime/opTime):
          2871/2582
          2919/2675
          2734/2704
          2953/2516
          3732/3346

          IE7測試結(jié)果:
          3140/376
          3173/327
          3238/247
          3265/235
          3217/299

          通過測試可見,函數(shù)調(diào)用的消耗基本可以忽略。每次調(diào)用時(shí)間僅為:
          3000/(200*1000*5) ==0.3毫秒 ,這個(gè)時(shí)間還包含函數(shù)內(nèi)部的++操作

          從示例可見,F(xiàn)F的函數(shù)調(diào)用消耗基本可以府略,IE雖然相當(dāng)于十倍++類簡單操作,但依然不足以重視。

          奇怪的是,第一次碰見ie的運(yùn)行效率高于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 金大為 閱讀(933) 評論(0)  編輯  收藏 所屬分類: JavaScript
          主站蜘蛛池模板: 五河县| 航空| 睢宁县| 铁岭市| 砀山县| 定兴县| 都江堰市| 息烽县| 阿拉善右旗| 浙江省| 通海县| 康平县| 齐河县| 台南市| 宕昌县| 鲁山县| 西平县| 桂阳县| 阿荣旗| 包头市| 宕昌县| 连州市| 民县| 格尔木市| 偏关县| 岳阳县| 洪洞县| 大冶市| 千阳县| 托克托县| 京山县| 广安市| 武威市| 托里县| 邵武市| 丹阳市| 柳河县| 安图县| 洛宁县| 德州市| 浙江省|