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 相关文章推荐
ExtJs GridPanel简单的增删改实现代码
Aug 26 Javascript
jQuery如何实现点击页面获得当前点击元素的id或其他信息
Jan 09 Javascript
jquery原创弹出层折叠效果点击折叠弹出一个层
Mar 12 Javascript
使用jQuery将多条数据插入模态框的实现代码
Oct 08 Javascript
果断收藏9个Javascript代码高亮脚本
Jan 06 Javascript
js实现简单的碰壁反弹效果
Aug 30 Javascript
基于JavaScript实现自动更新倒计时效果
Dec 19 Javascript
微信小程序的动画效果详解
Jan 18 Javascript
js简易版购物车功能
Jun 17 Javascript
javascript高仿热血传奇游戏实现代码
Feb 22 Javascript
浅谈手写node可读流之流动模式
Jun 01 Javascript
JavaScript读取本地文件常用方法流程解析
Oct 12 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 中英文语言转换类代码
2011/08/11 PHP
PHP反射实际应用示例
2019/04/03 PHP
Javascript 篱式条件判断
2008/08/22 Javascript
一些相见恨晚的 JavaScript 技巧
2010/04/25 Javascript
js创建数据共享接口——简化框架之间相互传值
2011/10/23 Javascript
Javascript模块化编程(一)模块的写法最佳实践
2013/01/17 Javascript
js实现字符串的16进制编码不加密
2014/04/25 Javascript
基于zepto的移动端轻量级日期插件--date_picker
2016/03/04 Javascript
AngularJS动态菜单操作指令
2017/04/25 Javascript
NodeJS链接MySql数据库的操作方法
2017/06/27 NodeJs
详解vue-cli 脚手架项目-package.json
2017/07/04 Javascript
js 奇葩技巧之隐藏代码
2017/08/11 Javascript
详解使用vuex进行菜单管理
2017/12/21 Javascript
webpack配置proxyTable时pathRewrite无效的解决方法
2018/12/13 Javascript
使用PreloadJS加载图片资源的基础方法详解
2020/02/03 Javascript
微信小程序实现翻牌抽奖动画
2020/09/21 Javascript
vue项目中使用rem,在入口文件添加内容操作
2020/11/11 Javascript
JavaScript中跨域问题的深入理解
2021/03/04 Javascript
朴素贝叶斯算法的python实现方法
2014/11/18 Python
python实现决策树C4.5算法详解(在ID3基础上改进)
2017/05/31 Python
详解python运行三种方式
2019/05/13 Python
django框架中ajax的使用及避开CSRF 验证的方式详解
2019/12/11 Python
把vgg-face.mat权重迁移到pytorch模型示例
2019/12/27 Python
PyCharm 无法 import pandas 程序卡住的解决方式
2020/03/09 Python
pip 20.3 新版本发布!即将抛弃 Python 2.x(推荐)
2020/12/16 Python
南非最受欢迎的时尚品牌:MRP
2016/09/18 全球购物
比驿:全球酒店比价网
2018/06/20 全球购物
自我鉴定怎么写
2013/12/05 职场文书
校园报刊亭创业计划书
2014/01/02 职场文书
关于人生的感言
2014/01/17 职场文书
运动会入场式解说词
2014/02/18 职场文书
请假条范文大全
2014/04/10 职场文书
简历自我评价模板
2015/03/11 职场文书
学生会工作感言
2015/08/07 职场文书
中学总务处工作总结
2015/08/12 职场文书
Java代码规范与质量检测插件SonarLint的使用
2022/08/05 Java/Android