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 相关文章推荐
脚本吧 - 幻宇工作室用到js,超强推荐base.js
Dec 23 Javascript
让firefox支持IE的一些方法的javascript扩展函数代码
Jan 02 Javascript
关于锚点跳转及jQuery下相关操作与插件
Oct 01 Javascript
jquery取子节点及当前节点属性值的方法
Sep 09 Javascript
apply和call方法定义及apply和call方法的区别
Nov 15 Javascript
百度地图API之百度地图退拽标记点获取经纬度的实现代码
Jan 12 Javascript
[js高手之路]图解javascript的原型(prototype)对象,原型链实例
Aug 28 Javascript
Vue 实现前端权限控制的示例代码
Jul 09 Javascript
vue实现标签云效果的方法详解
Aug 28 Javascript
基于iview-admin实现动态路由的示例代码
Oct 02 Javascript
使用Typescript和ES模块发布Node模块的方法
May 25 Javascript
vue中实现点击变成全屏的多种方法
Sep 27 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
DC动漫人物排行
2020/03/03 欧美动漫
2019年漫画销量排行榜:鬼灭登顶 海贼单卷制霸 尾田盛赞鬼灭
2020/03/08 日漫
mysql中存储过程、函数的一些问题
2007/02/14 PHP
Smarty模板简单配置与使用方法示例
2016/05/23 PHP
PHP根据树的前序遍历和中序遍历构造树并输出后序遍历的方法
2017/11/10 PHP
PHP实现微信小程序人脸识别刷脸登录功能
2018/05/24 PHP
PHP echo()函数讲解
2019/02/15 PHP
thinkPHP框架乐观锁和悲观锁实例分析
2019/10/30 PHP
PHP7 整型处理机制修改
2021/03/09 PHP
js跟随滚动条滚动浮动代码
2009/12/31 Javascript
js原型链原理看图说明
2012/07/07 Javascript
基于JQuery 滑动与动画的说明介绍
2013/04/18 Javascript
纯javascript实现自动发送邮件
2015/10/21 Javascript
深入浅析Extjs中store分组功能的使用方法
2016/04/20 Javascript
javascript学习指南之回调问题
2016/04/23 Javascript
概述BootStrap中role=&quot;form&quot;及role作用角色
2016/12/08 Javascript
过期软件破解办法实例详解
2017/01/04 Javascript
AngularJS 最常用的八种功能(基础知识)
2017/06/26 Javascript
node.js学习之事件模块Events的使用示例
2017/09/28 Javascript
使用Vue-cli 3.0搭建Vue项目的方法
2018/06/07 Javascript
JavaScript ES6箭头函数使用指南
2018/12/30 Javascript
Python深入学习之内存管理
2014/08/31 Python
Saltstack快速入门简单汇总
2016/03/01 Python
pygame游戏之旅 添加碰撞效果的方法
2018/11/20 Python
python判断自身是否正在运行的方法
2019/08/08 Python
浅谈Python爬虫原理与数据抓取
2020/07/21 Python
Python调用JavaScript代码的方法
2020/10/27 Python
Django利用elasticsearch(搜索引擎)实现搜索功能
2020/11/26 Python
Mytheresa美国官网:德国知名的女性奢侈品电商
2017/05/27 全球购物
美国高品质个性化珠宝销售网站:Jewlr
2018/05/03 全球购物
高校教师思想汇报
2014/01/11 职场文书
英文求职信范文
2014/05/23 职场文书
2014教师个人自我评价范文
2014/09/13 职场文书
房地产营销活动策划方案
2014/09/15 职场文书
市级三好学生评语
2014/12/29 职场文书
英文辞职信范文
2015/05/13 职场文书