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 相关文章推荐
function, new function, new Function之间的区别
Mar 08 Javascript
11款新鲜的jQuery插件[附所有demo下载]
Jan 24 Javascript
用JQUERY增删元素的代码
Feb 14 Javascript
js模拟点击事件实现代码
Nov 06 Javascript
使用jquery prev()方法找到同级的前一个元素
Jul 11 Javascript
js由下向上不断上升冒气泡效果实例
May 07 Javascript
AngularJS基础学习笔记之指令
May 10 Javascript
Fullpage.js固定导航栏-实现定位导航栏
Mar 17 Javascript
解决vue 引入子组件报错的问题
Sep 06 Javascript
JS基于开关思想实现的数组去重功能【案例】
Feb 18 Javascript
TypeScript类型声明书写详解
Aug 28 Javascript
vue实现把接口单独存放在一个文件方式
Aug 13 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详解ASCII码对照表与字符转换
2011/12/05 PHP
PHP面向对象学习笔记之二 生成对象的设计模式
2012/10/06 PHP
php模板原理讲解
2013/11/13 PHP
修改apache配置文件去除thinkphp url中的index.php
2014/01/17 PHP
php对象和数组相互转换的方法
2015/05/12 PHP
PHP自动载入类文件函数__autoload的使用方法
2019/03/25 PHP
JavaScript 脚本将当地时间转换成其它时区
2009/03/19 Javascript
鼠标右击事件代码(asp.net后台)
2011/01/27 Javascript
jquery多行滚动/向左或向上滚动/响应鼠标实现思路及代码
2013/01/23 Javascript
JS实现可改变列宽的table实例
2013/07/02 Javascript
js实现类似新浪微博首页内容渐显效果的方法
2015/04/10 Javascript
浅谈node.js中async异步编程
2015/10/22 Javascript
js实现自定义路由
2017/02/04 Javascript
bootstrap suggest下拉框使用详解
2017/04/10 Javascript
Vue自定义属性实例分析
2019/02/23 Javascript
vue实现pdf文档在线预览功能
2019/11/26 Javascript
基于小程序请求接口wx.request封装的类axios请求
2020/07/02 Javascript
Python中多线程thread与threading的实现方法
2014/08/18 Python
探究Python多进程编程下线程之间变量的共享问题
2015/05/05 Python
python创建临时文件夹的方法
2015/07/06 Python
Python的SimpleHTTPServer模块用处及使用方法简介
2018/01/22 Python
python微信跳一跳游戏辅助代码解析
2018/01/29 Python
Python实现EXCEL表格的排序功能示例
2019/06/25 Python
python如何实现从视频中提取每秒图片
2020/10/22 Python
解决python中import文件夹下面py文件报错问题
2020/06/01 Python
Burberry英国官网:英国标志性奢侈品牌
2017/03/29 全球购物
奢华时尚的独特视角:La Garçonne
2018/06/07 全球购物
教师应聘个人求职信
2013/12/10 职场文书
关于赌博的检讨书
2014/01/08 职场文书
国贸专业求职信
2014/06/28 职场文书
我的中国梦演讲稿初中篇
2014/08/19 职场文书
2014年教师节红领巾广播稿
2014/09/10 职场文书
2014年小学德育工作总结
2014/12/05 职场文书
领导欢送会主持词
2015/07/06 职场文书
获奖感言一句话
2015/07/31 职场文书
个人合作协议范本
2015/08/06 职场文书