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 使用手册(四)
Sep 23 Javascript
js单例模式详解实例
Nov 21 Javascript
jquery选择器原理介绍($()使用方法)
Mar 25 Javascript
javascript正则匹配汉字、数字、字母、下划线
Apr 10 Javascript
JavaScript用Number方法实现string转int
May 13 Javascript
浅析javascript 定时器
Dec 23 Javascript
使用JS中的exec()方法构造正则表达式验证
Aug 01 Javascript
JS判断是否在微信浏览器打开的简单实例(推荐)
Aug 24 Javascript
jQuery实现弹出带遮罩层的居中浮动窗口效果
Sep 12 Javascript
简单谈谈Javascript函数中的arguments
Feb 09 Javascript
vue 实现购物车总价计算
Nov 06 Javascript
js get和post请求实现代码解析
Feb 06 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异步执行的详解
2013/06/03 PHP
PHP实现的文件操作类及文件下载功能示例
2016/12/24 PHP
JavaScript delete操作符应用实例
2009/01/13 Javascript
jquery EasyUI的formatter格式化函数代码
2011/01/12 Javascript
正则表达式搭配js轻松处理json文本方便而老古
2013/02/17 Javascript
解析Jquery的LigerUI如何实现文件上传
2013/07/09 Javascript
js中for in的用法示例解析
2013/12/25 Javascript
JavaScript 定时器 SetTimeout之定时刷新窗口和关闭窗口(代码超简单)
2016/02/26 Javascript
倾力总结40条常见的移动端Web页面问题解决方案
2016/05/24 Javascript
js简单获取表单中单选按钮值的方法
2016/08/23 Javascript
利用JS做网页特效_大图轮播(实例讲解)
2017/08/09 Javascript
javascript基本常用排序算法解析
2017/09/27 Javascript
微信小程序新手教程之页面打开数量限制
2019/03/03 Javascript
JS使用栈判断给定字符串是否是回文算法示例
2019/03/04 Javascript
tsconfig.json配置详解
2019/05/17 Javascript
vue使用websocket的方法实例分析
2019/06/22 Javascript
JS+canvas五子棋人机对战实现步骤详解
2020/06/04 Javascript
[45:18]2018DOTA2亚洲邀请赛 4.3 突围赛 Optic vs iG 第一场
2018/04/04 DOTA
Python获取二维矩阵每列最大值的方法
2018/04/03 Python
详解Django中类视图使用装饰器的方式
2018/08/12 Python
在python中实现将一张图片剪切成四份的方法
2018/12/05 Python
Python3之乱码\xe6\x97\xa0\xe6\xb3\x95处理方式
2020/05/11 Python
详细分析Python可变对象和不可变对象
2020/07/09 Python
详解Pymongo常用查询方法总结
2021/01/29 Python
matplotlib事件处理基础(事件绑定、事件属性)
2021/02/03 Python
纯css3实现图片翻牌特效
2015/03/10 HTML / CSS
HTML5实现锚点时请使用id取代name
2013/09/06 HTML / CSS
荷兰皇家航空公司官方网站:KLM Royal Dutch Airlines
2017/12/07 全球购物
Europcar澳大利亚官网:全球汽车租赁领域的领导者
2019/03/24 全球购物
过程装备与控制工程专业个人的求职信
2013/12/01 职场文书
大专生的学习自我评价
2013/12/04 职场文书
大学军训自我鉴定
2013/12/15 职场文书
生产工厂门卫岗位职责
2014/09/26 职场文书
高中教师个人总结
2015/02/10 职场文书
护士求职简历自我评价
2015/03/10 职场文书
交互式可视化js库gojs使用介绍及技巧
2022/02/18 Javascript