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 相关文章推荐
Firefox/Chrome/Safari的中可直接使用$/$$函数进行调试
Feb 13 Javascript
javascript history对象(历史记录)使用方法(实现浏览器前进后退)
Jan 07 Javascript
jQuery搜索子元素的方法
Feb 10 Javascript
jQuery添加和删除指定标签的方法
Dec 16 Javascript
jQuery 局部div刷新和全局刷新方法总结
Oct 05 Javascript
js实现表单提交后不重新刷新当前页面
Nov 30 Javascript
AngularJS模仿Form表单提交的实现代码
Dec 08 Javascript
js Canvas绘制圆形时钟效果
Feb 17 Javascript
Vue.js仿Metronic高级表格(一)静态设计
Apr 17 Javascript
Angular客户端请求Rest服务跨域问题的解决方法
Sep 19 Javascript
Javascript中JSON数据分组优化实践及JS操作JSON总结
Dec 22 Javascript
阿望教你用vue写扫雷小游戏
Jan 20 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
中国第一家无线电行
2021/03/01 无线电
浅析PKI加密解密 OpenSSL
2013/07/01 PHP
PHP 中 Orientation 属性判断上传图片是否需要旋转
2015/10/16 PHP
Zend Framework教程之Autoloading用法详解
2016/03/08 PHP
Linux下 php7安装redis的方法
2018/11/01 PHP
一页面多XMLHttpRequest对象
2007/01/22 Javascript
IE浏览器PNG图片透明效果代码
2008/09/02 Javascript
jQuery.Validate验证库的使用介绍
2013/04/26 Javascript
JS获取图片高度宽度的方法分享
2015/04/17 Javascript
详解React-Todos入门例子
2016/11/08 Javascript
AugularJS从入门到实践(必看篇)
2017/07/10 Javascript
vue 2.1.3 实时显示当前时间,每秒更新的方法
2018/09/16 Javascript
[jQuery] 事件和动画详解
2019/03/05 jQuery
微信小程序调用微信支付接口的实现方法
2019/04/29 Javascript
javascript随机变色实例代码
2019/10/15 Javascript
vue项目配置 webpack-obfuscator 进行代码加密混淆的实现
2021/02/26 Vue.js
Python高级应用实例对比:高效计算大文件中的最长行的长度
2014/06/08 Python
Python 提取dict转换为xml/json/table并输出的实现代码
2016/08/28 Python
Python爬虫之模拟知乎登录的方法教程
2017/05/25 Python
python3读取excel文件只提取某些行某些列的值方法
2018/07/10 Python
使用python脚本实现查询火车票工具
2018/07/19 Python
详解Python数据可视化编程 - 词云生成并保存(jieba+WordCloud)
2019/03/26 Python
Python求离散序列导数的示例
2019/07/10 Python
Apache部署Django项目图文详解
2019/07/30 Python
numpy.array 操作使用简单总结
2019/11/08 Python
wxPython色环电阻计算器
2019/11/18 Python
基于python中__add__函数的用法
2019/11/25 Python
html5使用canvas实现跟随光标跳动的火焰效果
2014/01/07 HTML / CSS
排序都有哪几种方法?请列举。用JAVA实现一个快速排序
2014/02/16 面试题
小学综合实践活动总结
2014/07/07 职场文书
无财产离婚协议书范本
2014/10/28 职场文书
《我的长生果》教学反思
2016/02/20 职场文书
《莫泊桑拜师》教学反思
2016/02/22 职场文书
导游词之鲁迅祖居
2019/10/17 职场文书
Python控制台输出俄罗斯方块移动和旋转功能
2021/04/18 Python
详解Js模块化的作用原理和方案
2021/04/29 Javascript