JavaScript中String和StringBuffer的速度之争

 更新时间:2010年04月01日 16:52:57   作者:  
很多Javascript书籍中都是类比于Java说String在频繁的和大量的字符串连接方面的效率是不如StringBuffer的。
显示情况时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类的优势仍然很明显。具体在实际中就需要对浏览器进行判断。

相关文章

  • IE6图片加载的一个BUG解决方法

    IE6图片加载的一个BUG解决方法

    小图整合在一张大图里,然后在不同的CSS里调用同一张图片,以此来减少请求数,这是页面优化最常用的手段,但IE6会对页面里同一个图片,只要在不同的地方有引用到就会重新请求一次,需要加JS代码解决。
    2010-07-07
  • JS彻底弄懂GMT和UTC时区

    JS彻底弄懂GMT和UTC时区

    这篇文章主要介绍了JS彻底弄懂GMT和UTC时区,对时间感兴趣的同学,可以参考下
    2021-04-04
  • javascript 导出数据到Excel(处理table中的元素)

    javascript 导出数据到Excel(处理table中的元素)

    最近做的项目中有个要求,需要将数据导出到Excel中,关于这个就不是什么问题,网上的资料很多。可当Table中有Input(text)之类的元素是怎么办?
    2009-12-12
  • 微信小程序地图绘制线段并且测量(实例代码)

    微信小程序地图绘制线段并且测量(实例代码)

    这篇文章主要介绍了微信小程序地图绘制线段并且测量,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-01-01
  • JS监听dom高度变化几种常用方法总结

    JS监听dom高度变化几种常用方法总结

    我们在开发中会遇到一些需求,需要监听元素变化,比如元素属性变化,元素大小变化,这篇文章主要给大家介绍了关于JS监听dom高度变化几种常用方法的相关资料,需要的朋友可以参考下
    2023-10-10
  • javascript验证身份证完全方法具体实现

    javascript验证身份证完全方法具体实现

    下面这段代码完全实现了判断身份证是否合格.传入身份证号码就行了。包括了公安部的算法。下面的是用Ext实现的。但是基于javascript的语法居多,基本都可以用
    2013-11-11
  • 深入理解javascript中concat方法

    深入理解javascript中concat方法

    本文主要介绍了javascript中concat方法,主要分为2小节内容:1.concat方法的基础介绍;2.从实例中感受concat方法。需要的朋友一起来看下吧
    2016-12-12
  • js 判断各种数据类型的简单方法(推荐)

    js 判断各种数据类型的简单方法(推荐)

    下面小编就为大家带来一篇js 判断各种数据类型的简单方法(推荐)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-08-08
  • JavaScript自动内存管理与垃圾回收策略详细分析讲解

    JavaScript自动内存管理与垃圾回收策略详细分析讲解

    JS的垃圾回收机制是为了以防内存泄漏,内存泄漏的含义就是当已经不需要某块内存时这块内存还存在着,垃圾回收机制就是间歇的不定期的寻找到不再使用的变量,并释放掉它们所指向的内存。因为内存的大小是有限的,所以当内存不再需要的时候,我们需要对其进行释放
    2023-01-01
  • 全面了解javascript三元运算符

    全面了解javascript三元运算符

    下面小编就为大家带来一篇全面了解javascript三元运算符。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-06-06

最新评论