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 相关文章推荐
转义字符(\)对JavaScript中JSON.parse的影响概述
Jul 17 Javascript
各种常用的JS函数整理
Oct 25 Javascript
Jquery中ajax方法data参数的用法小结
Feb 12 Javascript
用javascript关闭本窗口技巧小结
Sep 05 Javascript
jquery文档操作wrap()方法实例简述
Jan 10 Javascript
JS实现两表格里数据来回转移的方法
May 28 Javascript
vue实现ToDoList简单实例
Feb 07 Javascript
js+html5实现手机九宫格密码解锁功能
Jul 30 Javascript
解决angular2 获取到的数据无法实时更新的问题
Aug 31 Javascript
jQuery实现侧边栏隐藏与显示的方法详解
Dec 22 jQuery
jquery+ajax实现异步上传文件显示进度条
Aug 17 jQuery
5种 JavaScript 方式实现数组扁平化
Oct 05 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
索尼ICF-SW100收音机评测
2021/03/02 无线电
php 搜索框提示(自动完成)实例代码
2012/02/05 PHP
windows下配置apache+php+mysql时出现问题的处理方法
2014/06/20 PHP
php制作的简单验证码识别代码
2016/01/26 PHP
Extjs学习笔记之三 extjs form更多的表单项
2010/01/07 Javascript
js 无提示关闭浏览器页面的代码
2010/03/09 Javascript
jquery 获取 outerHtml 包含当前节点本身的代码
2014/10/30 Javascript
jquery选择器需要注意的问题
2014/11/26 Javascript
node.js中的path.basename方法使用说明
2014/12/09 Javascript
javascript中CheckBox全选终极方案
2015/05/20 Javascript
AngularJS 2.0新特性有哪些
2016/02/18 Javascript
js document.getElementsByClassName的使用介绍与自定义函数
2016/11/25 Javascript
AngularJS使用拦截器实现的loading功能完整实例
2017/05/17 Javascript
Angular 2.0+ 的数据绑定的实现示例
2017/08/09 Javascript
微信小程序实现左右联动的实战记录
2018/07/05 Javascript
vue实现下拉加载其实没那么复杂
2019/08/13 Javascript
[03:36]2014DOTA2 TI小组赛综述 八强诞生进军钥匙球馆
2014/07/15 DOTA
深入浅析ImageMagick命令执行漏洞
2016/10/11 Python
Python 遍历列表里面序号和值的方法(三种)
2017/02/17 Python
Python标准库笔记struct模块的使用
2018/02/22 Python
Python MySQLdb 使用utf-8 编码插入中文数据问题
2018/03/13 Python
Python设计模式之简单工厂模式实例详解
2019/01/22 Python
python中return的返回和执行实例
2019/12/24 Python
Python基于BeautifulSoup爬取京东商品信息
2020/06/01 Python
python 引用传递和值传递详解(实参,形参)
2020/06/05 Python
keras自定义损失函数并且模型加载的写法介绍
2020/06/15 Python
适合各种场合的美食礼品:Harry & David
2016/08/03 全球购物
美国高档百货Nordstrom的折扣店:Nordstrom Rack
2017/11/13 全球购物
OLEDBConnection和SQLConnection有什么区别
2013/05/31 面试题
一套软件测试笔试题
2014/07/25 面试题
班组安全员工作职责
2014/02/01 职场文书
我的梦中国梦演讲稿
2014/04/23 职场文书
党的群众路线教育实践活动调研报告
2014/11/03 职场文书
2015年保险业务员工作总结
2015/05/27 职场文书
钱学森电影观后感
2015/06/04 职场文书
学生会2016感恩节活动小结
2016/04/01 职场文书