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 相关文章推荐
jquery cookie插件代码类
May 26 Javascript
JavaScript 语言基础知识点总结(思维导图)
Nov 10 Javascript
JS小游戏之宇宙战机源码详解
Sep 25 Javascript
jQuery中removeProp()方法用法实例
Jan 05 Javascript
javascript实现跨域的方法汇总
Jun 25 Javascript
jQuery使用Layer弹出层插件闪退问题
Dec 22 Javascript
原生JS下拉加载插件分享
Dec 26 Javascript
用angular实现多选按钮的全选与反选实例代码
May 23 Javascript
vue.js内置组件之keep-alive组件使用
Jul 10 Javascript
js实现全选反选不选功能代码详解
Apr 24 Javascript
javascript异常处理实现原理详解
Feb 17 Javascript
JS如何定义用字符串拼接的变量
Jul 11 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
真正面向对象编程:PHP5.01发布
2006/10/09 PHP
目录,文件操作详谈―PHP
2006/11/25 PHP
Thinkphp模板中截取字符串函数简介
2014/06/17 PHP
教你php如何实现验证码
2016/01/20 PHP
php上传大文件设置方法
2016/04/14 PHP
PHPstorm快捷键(分享)
2017/07/17 PHP
PHP实现统计所有字符在字符串中出现次数的方法
2017/10/17 PHP
thinkphp3.2同时连接两个数据库的简单方法
2019/08/13 PHP
浅析PHP7 的垃圾回收机制
2019/09/06 PHP
js中widow.open()方法使用详解
2013/07/30 Javascript
在js文件中写el表达式取不到值的原因及解决方法
2013/12/23 Javascript
Javascript学习笔记之函数篇(五) : 构造函数
2014/11/23 Javascript
jQuery中end()方法用法实例
2015/01/08 Javascript
浅谈EasyUI中Treegrid节点的删除
2015/03/01 Javascript
JQuery的attr 与 val区别
2016/06/12 Javascript
JS简单生成随机数(随机密码)的方法
2017/05/11 Javascript
angular directive的简单使用总结
2017/05/24 Javascript
js中less常用的方法小结
2017/08/09 Javascript
vue router动态路由下让每个子路由都是独立组件的解决方案
2018/04/24 Javascript
详解Vue中使用Echarts的两种方式
2018/07/03 Javascript
微信小程序实现漂亮的弹窗效果
2020/05/26 Javascript
在Vue中用canvas实现二维码和图片合成海报的方法
2019/06/10 Javascript
微信小程序判断页面是否从其他页面返回的实例代码
2019/07/03 Javascript
微信小程序 授权登录详解(附完整源码)
2019/08/23 Javascript
Vue中axios拦截器如何单独配置token
2019/12/27 Javascript
token 机制和实现方式
2020/12/15 Javascript
跟老齐学Python之集合的关系
2014/09/24 Python
几个提升Python运行效率的方法之间的对比
2015/04/03 Python
Python科学画图代码分享
2017/11/29 Python
Python基于xlutils修改表格内容过程解析
2020/07/28 Python
25个CSS3动画按钮和菜单教程分享
2012/10/03 HTML / CSS
webapp字号大小跟随系统字号大小缩放的示例代码
2018/12/26 HTML / CSS
材料加工硕士生求职信
2013/10/10 职场文书
2014年大学生党员评议表自我评价
2014/09/20 职场文书
使用Redis实现秒杀功能的简单方法
2021/05/08 Redis
仅用几行Python代码就能复制她的U盘文件?
2021/06/26 Python