javascript 高效拼字串
就像在c#中一樣,我們可以使用”+”來拼接字串,而對於操作頻繁、講究效率的字串拼接操作我們應該選擇stringbuilder類。在javascript中是否也存在這個問題呢?答案是肯定的,雖然javascript並沒有為我們提供一個內建的stringbuilder對象,但是我們可以自己來建立一個!至於效率到底能提高多少,讓程式說話吧!
//---stringbuilder---
function stringbuilder(){
this.__string__ = new array();
}
stringbuilder.prototype.append = function(str){
this.__string__.push(str);
}
stringbuilder.prototype.tostring = function(){
return this.__string__.join("");
}
var d1 = new date();
var buffer = new stringbuilder();
for(var i = 1; i < 10000; i++){
buffer.append("e3card");
}
var strresult = buffer.tostring();
var d2 = new date();
document.write("stringbuilder用時:" + (d2.gettime() - d1.gettime()) + "<br/>");
//---+-----
var d3 = new date();
var str = "";
for(var i = 1; i < 10000; i++){
str += "e3card";
}
var d4 = new date();
document.write("+連結用時:" + (d4.gettime() - d3.gettime()) + "<br/>");
在我的機器上(core2 3.0g/4gram),反覆f5後得到一個,比較平穩的測試結果:
stringbuilder用時:32
+連結用時:1109
哇哦,30多倍,我沒看錯吧!
好了,趕快自己做好一個lib,以後都用這個stringbuilder吧:
function stringbuilder(){
this.__string__ = new array();
}
stringbuilder.prototype.append = function(str){
this.__string__.push(str);
}
stringbuilder.prototype.tostring = function(){
return this.__string__.join("");
}