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表达式中连续的 &amp;&amp; 和 || 之赋值区别
Oct 17 Javascript
使用AngularJS和PHP的Laravel实现单页评论的方法
Jun 19 Javascript
跟我学习javascript的浮点数精度
Nov 16 Javascript
jQuery循环遍历子节点并获取值的方法
Apr 14 Javascript
JavaScript重定向URL参数的两种方法小结
Oct 19 Javascript
VUE多层路由嵌套实现代码
May 15 Javascript
JS中使用gulp实现压缩文件及浏览器热加载功能
Jul 12 Javascript
vue 实现 tomato timer(蕃茄钟)实例讲解
Jul 24 Javascript
js中split()方法得到的数组长度问题
Jul 19 Javascript
浅谈redux以及react-redux简单实现
Aug 28 Javascript
jQuery easyui datagird编辑行删除行功能的实现代码
Sep 20 jQuery
微信公众号服务器验证Token步骤图解
Dec 30 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开启openssl的方法
2014/05/15 PHP
学习php设计模式 php实现模板方法模式
2015/12/08 PHP
PHP基本语法实例总结
2016/09/09 PHP
Linux平台php命令行程序处理管道数据的方法
2016/11/10 PHP
解决微信授权回调页面域名只能设置一个的问题
2016/12/11 PHP
完美解决thinkphp唯一索引重复时出错的问题
2017/03/31 PHP
Laravel使用原生sql语句并调用的方法
2019/10/09 PHP
PHP ElasticSearch做搜索实例讲解
2020/02/05 PHP
调用js时ie6和ie7,ff的区别
2009/08/19 Javascript
js函数中onmousedown和onclick的区别和联系探讨
2013/05/19 Javascript
手机端转盘抽奖代码分享
2015/09/10 Javascript
JavaScript中三种异步上传文件方式
2016/03/06 Javascript
基于JS实现网页中的选项卡(两种方法)
2017/06/16 Javascript
vue mint-ui 实现省市区街道4级联动示例(仿淘宝京东收货地址4级联动)
2017/10/16 Javascript
Vue.js特性Scoped Slots的浅析
2019/02/20 Javascript
关于微信小程序获取小程序码并接受buffer流保存为图片的方法
2019/06/07 Javascript
vue-simple-uploader上传成功之后的response获取代码
2020/09/07 Javascript
Python操作CouchDB数据库简单示例
2015/03/10 Python
如何使用python爬取csdn博客访问量
2016/02/14 Python
浅谈python jieba分词模块的基本用法
2017/11/09 Python
Python里字典的基本用法(包括嵌套字典)
2019/02/27 Python
Keras 使用 Lambda层详解
2020/06/10 Python
浅谈Python协程
2020/06/17 Python
解决Pymongo insert时会自动添加_id的问题
2020/12/05 Python
HTML5 Canvas的事件处理介绍
2015/04/24 HTML / CSS
英国领先的维生素和补充剂品牌:Higher Nature
2019/08/26 全球购物
在线实验室测试:HealthLabs.com
2020/05/03 全球购物
家长会学生家长演讲稿
2013/12/29 职场文书
留学推荐信怎么写
2014/01/25 职场文书
xxx同志考察材料
2014/02/07 职场文书
《桃花心木》教学反思
2014/02/17 职场文书
安全教育感言
2014/03/04 职场文书
企业出纳岗位职责
2014/03/12 职场文书
教师师德师风整改措施
2014/10/24 职场文书
2015年团支书工作总结
2015/04/03 职场文书
离婚案件答辩状
2015/05/22 职场文书