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中onclick(this)用法介绍
Apr 19 Javascript
关于javascript模块加载技术的一些思考
Nov 28 Javascript
jquery获取easyui日期控件的值实现方法
Nov 09 Javascript
js遍历获取表格内数据的方法(必看)
Apr 06 Javascript
JavaScript实现前端实时搜索功能
Mar 26 Javascript
js禁止表单重复提交
Aug 29 Javascript
微信小程序 功能函数小结(手机号验证*、密码验证*、获取验证码*)
Dec 08 Javascript
jQuery选择器之层次选择器用法实例分析
Feb 19 jQuery
vue elementUI table表格数据 滚动懒加载的实现方法
Apr 04 Javascript
JS实现滑动插件
Jan 15 Javascript
VUE中使用HTTP库Axios方法详解
Feb 05 Javascript
原生js实现移动小球(碰撞检测)
Dec 17 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
使用apache模块rewrite_module (转)
2007/02/14 PHP
Zend的AutoLoad机制介绍
2012/09/27 PHP
fckeditor上传文件按日期存放及重命名方法
2015/05/22 PHP
Windows平台实现PHP连接SQL Server2008的方法
2017/07/26 PHP
PHP保存Base64图片base64_decode的问题整理
2019/11/04 PHP
使用Javascript和DOM Interfaces来处理HTML
2006/10/09 Javascript
JS Array对象入门分析
2008/10/30 Javascript
jQuery EasyUI API 中文文档 - TreeGrid 树表格使用介绍
2011/11/21 Javascript
两种方法实现文本框输入内容提示消失
2013/03/17 Javascript
纯js简单日历实现代码
2013/10/05 Javascript
JS获取DropDownList的value值与text值的示例代码
2014/01/07 Javascript
LABjs、RequireJS、SeaJS的区别
2014/03/04 Javascript
JS获取表格内指定单元格html内容的方法
2015/03/31 Javascript
javascript实现鼠标拖动改变层大小的方法
2015/04/30 Javascript
JS图片预加载插件详解
2017/06/21 Javascript
jQuery简单实现对数组去重及排序操作实例
2017/10/31 jQuery
node.js中路由,中间件,ge请求和post请求的参数详解
2017/12/26 Javascript
了解前端理论:rscss和rsjs
2019/05/23 Javascript
js 使用ajax设置和获取自定义header信息的方法小结
2020/03/12 Javascript
[00:34]TI7不朽珍藏III——纯金地穴编织者饰品展示
2017/07/15 DOTA
python实现随机梯度下降(SGD)
2020/03/24 Python
python模块smtplib实现纯文本邮件发送功能
2018/05/22 Python
Python提取支付宝和微信支付二维码的示例代码
2019/02/15 Python
Python 函数返回值的示例代码
2019/03/11 Python
pygame编写音乐播放器的实现代码示例
2019/11/19 Python
Python如何把Spark数据写入ElasticSearch
2020/04/18 Python
python爬虫容易学吗
2020/06/02 Python
CSS中越界问题的经典解决方案【推荐】
2016/04/19 HTML / CSS
amazeui页面校验功能的实现代码
2020/08/24 HTML / CSS
测试时代收集的软件测试面试题
2013/09/25 面试题
钳工实习自我鉴定
2013/09/19 职场文书
群众路线领导干部个人对照检查材料(集锦)
2014/09/23 职场文书
导游词之徐州云龙湖
2019/11/19 职场文书
Ajax是什么?Ajax高级用法之Axios技术
2021/04/21 Javascript
MySQL注入基础练习
2021/05/30 MySQL
简单且有用的Python数据分析和机器学习代码
2021/07/02 Python