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 相关文章推荐
关于juqery radio写法的兼容性问题(新老版本jquery)
Jun 14 Javascript
基于jquery的web页面日期格式化插件
Nov 15 Javascript
js中call与apply的用法小结
Dec 28 Javascript
优化RequireJS项目的相关技巧总结
Jul 01 Javascript
详解Javascript模板引擎mustache.js
Jan 20 Javascript
JavaScript Array对象详解
Mar 01 Javascript
基于jquery实现的银行卡号每隔4位自动插入空格的实现代码
Nov 22 Javascript
TypeScript中的方法重载详解
Apr 12 Javascript
微信小程序 授权登录详解(附完整源码)
Aug 23 Javascript
vue element-ui读取pdf文件的方法
Nov 26 Javascript
微信小程序登录时如何获取input框中的内容
Dec 04 Javascript
Element Card 卡片的具体使用
Jul 26 Javascript
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
php错误、异常处理机制(补充)
2012/05/07 PHP
深入解析php之sphinx
2013/05/15 PHP
php数组冒泡排序算法实例
2016/05/06 PHP
PHP实现的简单组词算法示例
2018/04/10 PHP
PHP7移除的扩展和SAPI
2021/03/09 PHP
window.onload 加载完毕的问题及解决方案(上)
2009/07/09 Javascript
firefox火狐浏览器与与ie兼容的2个问题总结
2010/07/20 Javascript
一个轻量级的javascript库 pj介绍
2010/12/19 Javascript
JQuery扩展插件Validate 5添加自定义验证方法
2011/09/05 Javascript
asp.net网站开发中用jquery实现滚动浏览器滚动条加载数据(类似于腾讯微博)
2012/03/14 Javascript
js实现简单折叠、展开菜单的方法
2015/08/28 Javascript
javascript实现base64 md5 sha1 密码加密
2015/09/09 Javascript
jquery彩色投票进度条简单实例演示
2020/07/23 Javascript
全面解析Bootstrap弹窗的实现方法
2015/12/01 Javascript
jQuery 插件封装的方法
2016/11/16 Javascript
vue实现ToDoList简单实例
2017/02/07 Javascript
Vue仿手机qq的实例代码(demo)
2017/09/08 Javascript
Vue 按键修饰符处理事件的方法
2018/05/04 Javascript
解决element-ui中下拉菜单子选项click事件不触发的问题
2018/08/22 Javascript
微信小程序new Date()方法失效问题解决方法
2019/07/29 Javascript
vue实现计步器功能
2019/11/01 Javascript
小程序如何自主实现拦截器的示例代码
2019/11/04 Javascript
python制作企业邮箱的爆破脚本
2016/10/05 Python
django批量导入xml数据
2016/10/16 Python
python编程实现归并排序
2017/04/14 Python
Python any()函数的使用方法
2019/10/28 Python
python3中的logging记录日志实现过程及封装成类的操作
2020/05/12 Python
Python模拟伯努利试验和二项分布代码实例
2020/05/27 Python
Python的控制结构之For、While、If循环问题
2020/06/30 Python
python PIL模块的基本使用
2020/09/29 Python
生日主持词
2014/03/20 职场文书
企业厂务公开实施方案
2014/03/26 职场文书
2014年酒店前台工作总结
2014/11/14 职场文书
实习单位指导教师评语
2014/12/30 职场文书
租车协议书
2015/01/27 职场文书
幼儿园大班开学寄语(2016秋季)
2015/12/03 职场文书