這個是無意中從網上看到了,打破了原來的想法,所以再帖一下,
<mce:script type="text/javascript"><!--<br />function StringBuffer() {<br />this._strs = new Array;<br />}<br />StringBuffer.prototype.append = function (str) {<br />this._strs.push(str);<br />};<br />StringBuffer.prototype.toString = function() {<br />this._strs.join("");<br />}; </p><p>var len = 30000;<br />var str = "textttttttt";<br />var tStart = new Date();<br />var str = "";<br />for(var i=0;i<len;i++)<br />{<br />str += str;<br />}<br />var tEnd = new Date();<br />document.write("<BR/>原始的方法加號 拼接"+len +"個字串花費時間 :"+(tEnd.getTime()-tStart.getTime())+" mS"); </p><p>var oSB = new StringBuffer();<br />tStart = new Date();<br />for(var i=0;i<len;i++)<br />{<br />oSB.append(str);<br />}<br />var sRst = oSB.toString();<br />tEnd = new Date();<br />document.write("<br/>StringBuffer 拼接"+len +"個字串 花費時間:"+(tEnd.getTime()-tStart.getTime())+" ms"); </p><p> tStart = new Date();<br />var strArr = new Array;<br />for(var i=0;i<len;i++)<br />{<br /> strArr[i] = str ;<br />}<br />strArr.join("");<br /> tEnd = new Date();<br />document.write("<BR/>數組join"+len +"個字串 花費時間 :"+(tEnd.getTime()-tStart.getTime())+" mS");<br />// --></mce:script>
比較
ie6
原始的方法加號 拼接30000個字串花費時間 :31 mS
StringBuffer 拼接30000個字串 花費時間:172 ms
數組join30000個字串 花費時間 :47 mS
ie7
原始的方法加號 拼接30000個字串花費時間 :53 mS
StringBuffer 拼接30000個字串 花費時間:337 ms
數組join30000個字串 花費時間 :104 mS
ff 3.5.6
方法加號 拼接30000個字串花費時間 :1 mS
StringBuffer 拼接30000個字串 花費時間:9 ms
數組join30000個字串 花費時間 :6 mS
opera 10.0
原始的方法加號 拼接30000個字串花費時間 :21 mS
StringBuffer 拼接30000個字串 花費時間:460 ms
數組join30000個字串 花費時間 :36 mS
chrome 1.0
原始的方法加號 拼接30000個字串花費時間 :4 mS
StringBuffer 拼接30000個字串 花費時間:7 ms
數組join30000個字串 花費時間 :12 mS
=========
var len = 3000000; 時
ie6
ie7 沒反應,就是沒有顯示
ff 3.5.6
方法加號 拼接3000000個字串花費時間 :57 mS
StringBuffer 拼接3000000個字串 花費時間:878 ms
數組join3000000個字串 花費時間 :742 mS
opera 10.0
原始的方法加號 拼接3000000個字串花費時間 :7130 mS
StringBuffer 拼接3000000個字串 花費時間:23813 ms
數組join3000000個字串 花費時間 :18742 mS
chrome 1.0
原始的方法加號 拼接3000000個字串花費時間 :57 mS
StringBuffer 拼接3000000個字串 花費時間:878 ms
數組join3000000個字串 花費時間 :742 mS
總結, join 並不一定要比原始的 +快, chrome我只是用 portable 版本的,一直沒更新,不過新版本的應該也差不多.
說明: 除了 ie6在xp sp3外,其它的都是在 vista上的結果,還有解說文字沒有改.....
參考 http://kacakong.javaeye.com/blog/378858