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 判断 enter 事件
Feb 12 Javascript
js jquery验证银行卡号信息正则学习
Jan 21 Javascript
jQuery实现统计输入文字个数的方法
Mar 11 Javascript
用js编写的简单的计算器代码程序
Aug 04 Javascript
Node.js环境下编写爬虫爬取维基百科内容的实例分享
Jun 12 Javascript
解决wx.onMenuShareTimeline出现的问题
Aug 16 Javascript
JS查找字符串中出现次数最多的字符
Sep 05 Javascript
angularjs+bootstrap实现自定义分页的实例代码
Jun 19 Javascript
jQuery实现点击关注和取消功能
Jul 03 jQuery
jQuery实现标签子元素的添加和赋值方法
Feb 24 jQuery
详解多页应用 Webpack4 配置优化与踩坑记录
Oct 16 Javascript
vue element upload实现图片本地预览
Aug 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
全国FM电台频率大全 - 8 黑龙江省
2020/03/11 无线电
PHP5/ZendEngine2的改进
2006/10/09 PHP
图书管理程序(二)
2006/10/09 PHP
php中的实现trim函数代码
2007/03/19 PHP
PHP日期时间函数的高级应用技巧
2009/05/16 PHP
php 生成静态页面的办法与实现代码详细版
2010/02/15 PHP
jquery $.ajax入门应用二
2008/11/19 Javascript
JavaScript入门教程(1) 什么是JS
2009/01/31 Javascript
jquery last-child 列表最后一项的样式
2010/01/22 Javascript
你必须知道的JavaScript 中字符串连接的性能的一些问题
2013/05/07 Javascript
div当滚动到页面顶部的时候固定在顶部实例代码
2013/05/27 Javascript
使用js如何实现全选与全不选
2013/12/30 Javascript
20个实用的JavaScript技巧分享
2014/11/28 Javascript
JS实现新浪博客左侧的Blog管理菜单效果代码
2015/10/22 Javascript
JavaScript使用DeviceOne开发实战(二) 生成调试安装包
2015/12/01 Javascript
JavaScript实现简洁的俄罗斯方块完整实例
2016/03/01 Javascript
一起学写js Calender日历控件
2016/04/14 Javascript
jquery datatable服务端分页
2016/08/31 Javascript
微信小程序 tabs选项卡效果的实现
2017/01/05 Javascript
layui 优化button按钮和弹出框的方法
2018/08/15 Javascript
Vuex新手的理解与使用详解
2019/05/31 Javascript
使用jQuery实现掷骰子游戏
2019/10/24 jQuery
vue+render+jsx实现可编辑动态多级表头table的实例代码
2020/04/01 Javascript
Python创建xml的方法
2015/03/10 Python
基于python爬虫数据处理(详解)
2017/06/10 Python
Python使用zip合并相邻列表项的方法示例
2018/03/17 Python
Django 连接sql server数据库的方法
2018/06/30 Python
浅谈python之高阶函数和匿名函数
2019/03/21 Python
西班牙伏林航空公司:Vueling
2016/08/05 全球购物
挪威太阳镜和眼镜网上商城:SmartBuyGlasses挪威
2016/08/20 全球购物
草莓网中国:StrawberryNet中国
2020/08/17 全球购物
给民警的表扬信
2014/01/08 职场文书
基层党组织公开承诺书
2014/03/28 职场文书
民事授权委托书范文
2014/08/02 职场文书
乡镇党的群众路线教育实践活动领导班子对照检查材料
2014/09/25 职场文书
详解Python为什么不用设计模式
2021/06/24 Python