JavaScript中String和StringBuffer的速度之爭

來源:互聯網
上載者:User

顯示情況時Javascript中並沒有StringBuffer類,一種主流的Javascript StringBuffer類的實現是通過prototype構造一個StringBuffer類。
StringBuffer.js 複製代碼 代碼如下:function StringBuffer(){
this.content = new Array;
}
StringBuffer.prototype.append = function( str ){
this.content.push( str );
}
StringBuffer.prototype.toString = function(){
return this.content.join("");
}

現在讓我們寫一個測試案例:
TestStringBUffer.html 複製代碼 代碼如下:<html>
<head>
<title>test</title>
<script type="text/javascript“ language="javascript" src="StringBuffer.js"></script>
<script>
function testStringBuffer(){
var date1 = new Date();
var str;
for( var i=0; i<10000; i++){
str += "text";
}
var date2 = new Date();
document.writeln("Sting use time:"+ (date2 - date1) +"ms");
var date3 = new Date();
var strBuffer = new StringBuffer();
for(i=0; i<10000; i++){
strBuffer.append("text");
}
strBuffer.toString();
var date4 = new Date();
document.writeln("<br/>StringBuffer use time:"+ (date4 - date3) +"ms");
}
</script>
</head>
<body>
<input type="button" value="testStringBuffer" onclick="testStringBuffer()"/>
</body>
</html>

現在讓我們來測試下,看看會有什麼發生:
IE8:
Sting use time:11ms
StringBuffer use time:47ms
結果是StringBuffer不但沒有比String效率高,反而使低了不少。難道是前輩們錯了?
那讓我們再在別的瀏覽器中看看吧:
IE7:
Sting use time:266ms
StringBuffer use time:78ms
IE7中StringBuffer的優勢很明顯。
可以看到,在現在的主流瀏覽器中,都對String類的字串串連作了最佳化,所以效能要好於自訂的StringBuffer類,但是在比較老的瀏覽器中,StringBuffer類的優勢仍然很明顯。具體在實際中就需要對瀏覽器進行判斷。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.