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 ajax 同步异步的执行 return值不能取得的解决方案
Jan 08 Javascript
百度地图api应用标注地理位置信息(js版)
Feb 01 Javascript
JavaScript操作cookie类实例
Mar 31 Javascript
JavaScript中eval()函数用法详解
Dec 14 Javascript
深入浅析JSON.parse()、JSON.stringify()和eval()的作用详解
Apr 03 Javascript
浅谈js的html元素的父节点,子节点
Aug 06 Javascript
JavaScript BASE64算法实现(完美解决中文乱码)
Jan 10 Javascript
Vue项目添加动态浏览器头部title的方法
Jul 11 Javascript
JS数组求和的常用方法总结【5种方法】
Jan 14 Javascript
使用webpack构建应用的方法步骤
Mar 04 Javascript
javascript实现对话框功能警告(alert 消息对话框)确认(confirm 消息对话框)
May 07 Javascript
js实现经典贪吃蛇小游戏
Mar 19 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在服务器执行exec命令失败的解决方法
2012/03/03 PHP
php笔记之:数据类型与常量的使用分析
2013/05/14 PHP
PHP实现在windows下配置sendmail并通过mail()函数发送邮件的方法
2017/06/20 PHP
JS获取scrollHeight问题想到的标准问题
2007/05/27 Javascript
Jquery数字上下滚动动态切换插件
2015/08/08 Javascript
设置点击文本框或图片弹出日历控件的实现代码
2016/05/12 Javascript
AngularJS包括详解及示例代码
2016/08/17 Javascript
JS 根据子网掩码,网关计算出所有IP地址范围示例
2020/04/23 Javascript
百度地图API之百度地图退拽标记点获取经纬度的实现代码
2017/01/12 Javascript
javascript事件的绑定基础实例讲解(34)
2017/02/14 Javascript
无循环 JavaScript(map、reduce、filter和find)
2017/04/08 Javascript
javascript简单写的判断电话号码实例
2017/05/24 Javascript
ionic App问题总结系列之ionic点击系统返回键退出App
2017/08/19 Javascript
WebGL学习教程之Three.js学习笔记(第一篇)
2019/04/25 Javascript
Vue触发隐藏input file的方法实例详解
2019/08/14 Javascript
Element ui 下拉多选时新增一个选择所有的选项
2019/08/21 Javascript
JS实现网站吸顶条
2020/01/08 Javascript
jquery实现聊天机器人
2020/02/08 jQuery
详谈Numpy中数组重塑、合并与拆分方法
2018/04/17 Python
Linux CentOS Python开发环境搭建教程
2018/11/28 Python
django主动抛出403异常的方法详解
2019/01/04 Python
python实现高斯(Gauss)迭代法的例子
2019/11/20 Python
使用tensorflow显示pb模型的所有网络结点方式
2020/01/23 Python
Django+boostrap 美化admin后台的操作
2020/03/11 Python
Django实现内容缓存实例方法
2020/06/30 Python
CSS3实现的闪烁跳跃进度条示例(附源码)
2013/08/19 HTML / CSS
娇韵诗法国官网:Clarins法国
2019/01/29 全球购物
在阿尔卑斯山或希腊度过快乐假期:Alpine Elements
2019/12/28 全球购物
采购员的工作职责
2013/12/26 职场文书
初中同学聚会邀请函
2014/02/03 职场文书
财务管理职业生涯规划书
2014/02/26 职场文书
《美丽的田园》教学反思
2014/03/01 职场文书
经典促销广告词大全
2014/03/19 职场文书
2014年单位植树节活动方案
2014/03/23 职场文书
祝福语集锦:给妹妹结婚的祝福语
2019/12/18 职场文书
Python 中面向接口编程
2022/05/20 Python