JavaScript中String和StringBuffer的速度之爭
更新時(shí)間:2010年04月01日 16:52:57 作者:
很多Javascript書籍中都是類比于Java說String在頻繁的和大量的字符串連接方面的效率是不如StringBuffer的。
顯示情況時(shí)Javascript中并沒有StringBuffer類,一種主流的Javascript StringBuffer類的實(shí)現(xiàn)是通過prototype構(gòu)造一個(gè)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("");
}
現(xiàn)在讓我們寫一個(gè)測試用例:
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>
現(xiàn)在讓我們來測試下,看看會(huì)有什么發(fā)生:
IE8:
Sting use time:11ms
StringBuffer use time:47ms
結(jié)果是StringBuffer不但沒有比String效率高,反而使低了不少。難道是前輩們錯(cuò)了?
那讓我們?cè)僭趧e的瀏覽器中看看吧:
IE7:
Sting use time:266ms
StringBuffer use time:78ms
IE7中StringBuffer的優(yōu)勢(shì)很明顯。
可以看到,在現(xiàn)在的主流瀏覽器中,都對(duì)String類的字符串連接作了優(yōu)化,所以性能要好于自定義的StringBuffer類,但是在比較老的瀏覽器中,StringBuffer類的優(yōu)勢(shì)仍然很明顯。具體在實(shí)際中就需要對(duì)瀏覽器進(jìn)行判斷。
StringBuffer.js
復(fù)制代碼 代碼如下:
function StringBuffer(){
this.content = new Array;
}
StringBuffer.prototype.append = function( str ){
this.content.push( str );
}
StringBuffer.prototype.toString = function(){
return this.content.join("");
}
現(xiàn)在讓我們寫一個(gè)測試用例:
TestStringBUffer.html
復(fù)制代碼 代碼如下:
<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>
現(xiàn)在讓我們來測試下,看看會(huì)有什么發(fā)生:
IE8:
Sting use time:11ms
StringBuffer use time:47ms
結(jié)果是StringBuffer不但沒有比String效率高,反而使低了不少。難道是前輩們錯(cuò)了?
那讓我們?cè)僭趧e的瀏覽器中看看吧:
IE7:
Sting use time:266ms
StringBuffer use time:78ms
IE7中StringBuffer的優(yōu)勢(shì)很明顯。
可以看到,在現(xiàn)在的主流瀏覽器中,都對(duì)String類的字符串連接作了優(yōu)化,所以性能要好于自定義的StringBuffer類,但是在比較老的瀏覽器中,StringBuffer類的優(yōu)勢(shì)仍然很明顯。具體在實(shí)際中就需要對(duì)瀏覽器進(jìn)行判斷。
相關(guān)文章
window.parent調(diào)用父框架時(shí) ie跟火狐不兼容問題
window.parent調(diào)用父框架時(shí),ie跟火狐不兼容問題!2009-07-07
JavaScript實(shí)現(xiàn)簡單的文本逐字打印效果示例
這篇文章主要介紹了JavaScript實(shí)現(xiàn)簡單的文本逐字打印效果,涉及javascript結(jié)合時(shí)間函數(shù)動(dòng)態(tài)操作頁面元素相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2018-04-04
js 顯示base64編碼的二進(jìn)制流網(wǎng)頁圖片
base64簡單地說,它把一些 8-bit 數(shù)據(jù)翻譯成標(biāo)準(zhǔn) ASCII 字符,我們把圖像文件的內(nèi)容直接寫在了HTML 文件中,這樣做的好處是,節(jié)省了一個(gè)HTTP 請(qǐng)求2014-04-04
兩種常用的javascript數(shù)組去重方法思路及代碼
第一種是常規(guī)的方法:建一個(gè)新的數(shù)組存放結(jié)果,for循環(huán)中每次從原數(shù)組中取出一個(gè)元素,用indexOf查找新數(shù)組中是否有該元素,至于第二種詳細(xì)的看下本文哦2013-03-03
thinkjs微信中控之微信鑒權(quán)登陸的實(shí)現(xiàn)代碼
這篇文章主要介紹了thinkjs微信中控之微信鑒權(quán)登陸的實(shí)現(xiàn)代碼,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-08-08
JavaScript實(shí)現(xiàn)鼠標(biāo)滑過處生成氣泡的方法
這篇文章主要介紹了JavaScript實(shí)現(xiàn)鼠標(biāo)滑過處生成氣泡的方法,涉及鼠標(biāo)事件與頁面樣式的相關(guān)操作技巧,需要的朋友可以參考下2015-05-05
require簡單實(shí)現(xiàn)單頁應(yīng)用程序(SPA)
下面小編就為大家?guī)硪黄猺equire簡單實(shí)現(xiàn)單頁應(yīng)用程序(SPA)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-07-07
微信小程序ReferenceError:xxx?is?not?defined報(bào)錯(cuò)解決辦法
最近在學(xué)習(xí)微信小程序的開發(fā),在一個(gè)練手項(xiàng)目中竟然報(bào)錯(cuò),所以下面這篇文章主要給大家介紹了關(guān)于微信小程序ReferenceError:xxx?is?not?defined報(bào)錯(cuò)的解決辦法,需要的朋友可以參考下2023-12-12

