JavaScript 字串串連效能最佳化

來源:互聯網
上載者:User

複製代碼 代碼如下:var str = "hello";
str += " world";

後台所做工作:
1)建立儲存 "hello" 的字串,且使 str 指向它。
2)建立儲存 "world" 的字串。
3)建立儲存結果的字串。
4)將 str 中的當前內容複寫到結果字串中。
5)把 world 複製到結果字串中。
6)更新 str ,使 str 指向結果字串。
每拼接一次字串就迴圈重複2)~6),如果重複成百上千次則會非常消耗資源,影響效能。
解決方案:
使用 Array Object Storage Service字串,之後使用 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%以上的時間。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.