就像在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("");}