現在讓我們寫一個測試用例: 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類的優勢仍然很明顯。具體在實際中就需要對瀏覽器進行判斷。