Oo緣來是你oO


          posts - 120,comments - 125,trackbacks - 0

          JavaScript中字符串連接性能優化

                  -- JavaScript 學習筆記

          馬嘉楠    2008-12-19

           

          var str = "hello"
          str 
          += " world"

           

          后臺所做工作:

          1)創建存儲 "hello" 的字符串,且使 str 指向它。

          2)創建存儲 "world" 的字符串。

          3)創建存儲結果的字符串。

          4)將 str 中的當前內容復制到結果字符串中。

          5)把 world 復制到結果字符串中。

          6)更新 str ,使 str 指向結果字符串。

           

          每拼接一次字符串就循環重復2)~6),如果重復成百上千次則會非常消耗資源,影響性能。

           

          解決方法:

          使用 Array 對象存儲字符串,之后使用 join()方法輸出結果。

          仿照 Java 中的 StringBuffer 類。

           

              function StringBuffer(){ 
                  
          this._strings = new
           Array; 
              } 
              StringBuffer.prototype.append 
          = function
           (str){ 
                  
          this
          ._strings.push(str); 
              } 
              StringBuffer.prototype.toString 
          = function
           (){ 
                  
          return this._strings.join(""
          ); 
              } 

           

          測試性能:

          代碼1:使用 "+=" 拼接字符串

           

          var d = new Date(); 
          var str = ""

          for(var i=0;i<10000;i++
          ){ 
              str 
          += "test"



          var d2 = new
           Date(); 
          document.writeln(d2.getTime()
          -d.getTime()); 

           

          代碼2:使用 StringBuffer

           

          var d = new Date(); 
          var str = new
           StringBuffer(); 
          for(var i=0;i<10000;i++
          ){ 
              str.append(
          "test"
          ); 

          var res =
           str.toString(); 
          var d2 = new
           Date(); 
          document.writeln(d2.getTime()
          -d.getTime()); 

           

          從多次測試結果看來,使用StringBuffer 可以節省50%以上的時間。



          馬嘉楠
          jianan.ma@gmail.com

          posted on 2008-12-20 00:09 馬嘉楠 閱讀(486) 評論(0)  編輯  收藏 所屬分類: Java Script
          主站蜘蛛池模板: 页游| 信丰县| 中牟县| 肥东县| 嘉义县| 兴业县| 彰化市| 安义县| 黄冈市| 眉山市| 涞源县| 灌云县| 来宾市| 名山县| 岳阳县| 营口市| 原阳县| 陆良县| 成武县| 长兴县| 山东| 县级市| 开江县| 张家港市| 阳城县| 泸州市| 金湖县| 富民县| 吴江市| 左贡县| 卢湾区| 丘北县| 常州市| 广宁县| 静宁县| 抚远县| 常熟市| 余姚市| 颍上县| 于都县| 诏安县|