JavaScript中String和StringBuffer的速度之争


Posted in Javascript onApril 01, 2010

显示情况时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类的优势仍然很明显。具体在实际中就需要对浏览器进行判断。
Javascript 相关文章推荐
jsTree 基于JQuery的排序节点 Bug
Jul 26 Javascript
jquery动态添加删除div 具体实现
Jul 20 Javascript
JS实现关键字搜索时的相关下拉字段效果
Aug 05 Javascript
javascript实现日期格式转换
Dec 16 Javascript
完美兼容多浏览器的js判断图片路径代码汇总
Apr 17 Javascript
js实现全国省份城市级联下拉菜单效果代码
Sep 07 Javascript
jQuery使用contains过滤器实现精确匹配方法详解
Feb 25 Javascript
JS生成某个范围的随机数【四种情况详解】
Apr 20 Javascript
javascript中setAttribute兼容性用法分析
Dec 12 Javascript
Javascript 严格模式use strict详解
Sep 16 Javascript
JavaScript中发出HTTP请求最常用的方法
Jul 12 Javascript
8个非常实用的Vue自定义指令
Dec 15 Vue.js
Cookie 小记
Apr 01 #Javascript
javascript操作cookie的文章(设置,删除cookies)
Apr 01 #Javascript
在模板页面的js使用办法
Apr 01 #Javascript
使用Microsoft Ajax Minifier减小JavaScript文件大小的方法
Apr 01 #Javascript
JS控制显示隐藏兼容问题(IE6、IE7、IE8)
Apr 01 #Javascript
JavaScript 轻松搞定快捷留言功能 只需一行代码
Apr 01 #Javascript
Javascript 类与静态类的实现
Apr 01 #Javascript
You might like
Excel数据导入Mysql数据库的实现代码
2008/06/05 PHP
javascript 45种缓动效果 非常酷
2011/06/28 Javascript
上传的js验证(图片/文件的扩展名)
2013/04/25 Javascript
JavaScript中按位“异或”运算符使用介绍
2014/03/14 Javascript
jquery实现select选中行、列合计示例
2014/04/25 Javascript
jQuery实现点击按钮弹出可关闭层的浮动层插件
2015/09/19 Javascript
全面解析Bootstrap表单使用方法(表单控件状态)
2015/11/24 Javascript
JS使用eval()动态创建变量的方法
2016/06/03 Javascript
javascript运算符——位运算符全面介绍
2016/07/14 Javascript
浅谈javascript中遇到的字符串对象处理
2016/11/18 Javascript
JQuery form表单提交前验证单选框是否选中、删除记录时验证经验总结(整理)
2017/06/09 jQuery
JS创建Tag标签的方法详解
2017/06/09 Javascript
AngularJS点击添加样式、点击变色设置的实例代码
2017/07/27 Javascript
在一般处理程序(ashx)中弹出js提示语
2017/08/16 Javascript
vue实现导航栏效果(选中状态刷新不消失)
2017/12/13 Javascript
node实现mock-plugin中间件的方法
2019/12/25 Javascript
编写一个javascript元循环求值器的方法
2020/04/14 Javascript
python使用pymysql实现操作mysql
2016/09/13 Python
Python机器学习算法之k均值聚类(k-means)
2018/02/23 Python
python实现日常记账本小程序
2018/03/10 Python
python3 遍历删除特定后缀名文件的方法
2018/04/23 Python
解决pycharm无法调用pip安装的包问题
2018/05/18 Python
Python实现滑动平均(Moving Average)的例子
2019/08/24 Python
Python实现快速排序的方法详解
2019/10/25 Python
Python性能分析工具Profile使用实例
2019/11/19 Python
tensorflow tf.train.batch之数据批量读取方式
2020/01/20 Python
Windows 下python3.8环境安装教程图文详解
2020/03/11 Python
python实现手势识别的示例(入门)
2020/04/15 Python
Python如何实现自带HTTP文件传输服务
2020/07/08 Python
python爬虫请求头设置代码
2020/07/28 Python
python基于爬虫+django,打造个性化API接口
2021/01/21 Python
代领毕业证委托书
2014/08/02 职场文书
清洁工个人工作总结
2015/03/05 职场文书
小兵张嘎电影观后感
2015/06/03 职场文书
实验室安全管理制度
2015/08/05 职场文书
ant design charts 获取后端接口数据展示
2022/05/25 Javascript