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 相关文章推荐
JS的IE和Firefox兼容性集锦
Dec 11 Javascript
jQuery实现友好的轮播图片特效
Jan 12 Javascript
详解JavaScript对象类型
Jun 16 Javascript
15位和18位身份证JS校验的简单实例
Jul 18 Javascript
关于Node.js中Buffer的一些你可能不知道的用法
Mar 28 Javascript
Angular中$broadcast和$emit的使用方法详解
May 22 Javascript
记一次Vue.js混入mixin的使用(分权限管理页面)
Apr 17 Javascript
Electron + vue 打包桌面操作流程详解
Jun 24 Javascript
iview实现图片上传功能
Jun 29 Javascript
vue在响应头response中获取自定义headers操作
Jul 24 Javascript
javascript读取本地文件和目录方法详解
Aug 06 Javascript
JS实现简单控制视频播放倍速的实例代码
Apr 18 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
ThinkPHP多表联合查询的常用方法
2020/03/24 PHP
WordPress中用于创建以及获取侧边栏的PHP函数讲解
2015/12/29 PHP
php实现与python进行socket通信的方法示例
2017/08/30 PHP
JavaScript中的作用域链和闭包
2012/06/30 Javascript
JS分页效果示例
2013/10/11 Javascript
JS实现关键字搜索时的相关下拉字段效果
2014/08/05 Javascript
JavaScript事件学习小结(五)js中事件类型之鼠标事件
2016/06/09 Javascript
Node.js Addons翻译(C/C++扩展)
2016/06/12 Javascript
使用vue.js制作分页组件
2016/06/27 Javascript
详解javascript表单的Ajax提交插件的使用
2016/12/29 Javascript
ECMAscript 变量作用域总结概括
2017/08/18 Javascript
JS手机端touch事件计算滑动距离的方法示例
2017/10/26 Javascript
ES6之模版字符串的具体使用
2018/05/17 Javascript
详解JavaScript 浮点数运算的精度问题
2019/07/23 Javascript
uni-app使用countdown插件实现倒计时
2020/11/01 Javascript
Vue中避免滥用this去读取data中数据
2021/03/02 Vue.js
[07:25]DOTA2-DPC中国联赛2月5日Recap集锦
2021/03/11 DOTA
Python os模块中的isfile()和isdir()函数均返回false问题解决方法
2015/02/04 Python
Python工程师面试题 与Python基础语法相关
2016/01/14 Python
python脚本替换指定行实现步骤
2017/07/11 Python
Python+Django搭建自己的blog网站
2018/03/13 Python
python如何修改装饰器中参数
2018/03/20 Python
对python 各种删除文件失败的处理方式分享
2018/04/24 Python
python根据完整路径获得盘名/路径名/文件名/文件扩展名的方法
2020/04/22 Python
Python实现淘宝秒杀功能的示例代码
2021/01/19 Python
html5 worker 实例(二) 图片变换效果
2013/06/24 HTML / CSS
波兰香水和化妆品购物网站:Notino.pl
2017/11/07 全球购物
英国在线潜水商店:Simply Scuba
2019/03/25 全球购物
波兰最大的宠物用品网上商店:FERA.PL
2019/08/11 全球购物
德国亚马逊官方网站:Amazon.de
2020/11/15 全球购物
法律顾问服务方案
2014/05/15 职场文书
工伤事故赔偿协议书
2015/08/06 职场文书
给校长的建议书范文
2015/09/14 职场文书
Windows10下安装MySQL8
2021/04/06 MySQL
Java Lambda表达式常用的函数式接口
2022/04/07 Java/Android
vue @ ~ 相对路径 路径别名设置方式
2022/06/05 Vue.js