javascript 字符串连接的性能问题(多浏览器)


Posted in Javascript onNovember 18, 2008

书中附带的测试代码如下 

<html> 
<head> 
<title>Example</title> 
</head> 
<body> 
<p><strong>Note:</strong> The latest versions of Firefox seem to have fixed the string concatenation problem. If you are using Firefox 1.0 or later, the string buffer may actually take longer than normal string concatenation.</p> 
<script type="text/javascript"> 
function StringBuffer() { 
this.__strings__ = new Array; 
} 
StringBuffer.prototype.append = function (str) { 
this.__strings__.push(str); 
}; 
StringBuffer.prototype.toString = function () { 
return this.__strings__.join(""); 
}; 
var d1 = new Date(); 
var str = ""; 
for (var i=0; i < 10000; i++) { 
str += "text"; 
} 
var d2 = new Date(); 
document.write("Concatenation with plus: " + (d2.getTime() - d1.getTime()) + " milliseconds"); 
var buffer = new StringBuffer(); 
d1 = new Date(); 
for (var i=0; i < 10000; i++) { 
buffer.append("text"); 
} 
var result = buffer.toString(); 
d2 = new Date(); 
document.write("<br />Concatenation with StringBuffer: " + (d2.getTime() - d1.getTime()) + " milliseconds"); 
</script> </body> 
</html>

在 Firefox/3.0.3中执行的结果如下:
Concatenation with plus: 5 milliseconds
Concatenation with StringBuffer: 10 milliseconds
在IE6中执行结果如下:
Concatenation with plus: 234 milliseconds
Concatenation with StringBuffer: 62 milliseconds
1.两种方式性能差别很大
2.看来IE6字符串连接处理能力比FF3很差呀
3.IE6和FF3两种方式结果相反,看来以后写连接优化还有注意浏览器呀

Javascript 相关文章推荐
下拉菜单点击实现连接跳转功能的js代码
May 19 Javascript
全面兼容的javascript时间格式化函数(比较实用)
May 14 Javascript
深入理解JavaScript系列(50):Function模式(下篇)
Mar 04 Javascript
JavaScript获取一个范围内日期的方法
Apr 24 Javascript
Juery解决tablesorter中文排序和字符范围的方法
May 06 Javascript
jQuery实现table中的tr上下移动并保持序号不变的实例代码
Jul 11 Javascript
Bootstrap下拉菜单更改为悬停(hover)触发的方法
May 24 Javascript
react-router中的属性详解
Jun 01 Javascript
微信小程序实现分享朋友圈的图片功能示例
Jan 18 Javascript
微信小程序实现点击按钮后修改颜色
Dec 05 Javascript
vue实现户籍管理系统
May 29 Javascript
Vue实现腾讯云点播视频上传功能的实现代码
Aug 17 Javascript
js的闭包的一个示例说明
Nov 18 #Javascript
Ext面向对象开发实践(续)
Nov 18 #Javascript
Javascript打印网页部分内容的脚本
Nov 17 #Javascript
js实现简单模态窗口,背景灰显
Nov 14 #Javascript
javascript 限制输入和粘贴(IE,firefox测试通过)
Nov 14 #Javascript
javascript 出生日期和身份证判断大全
Nov 13 #Javascript
Ajax,UTF-8还是GB2312 eval 还是execScript
Nov 13 #Javascript
You might like
再次研究下cache_lite
2007/02/14 PHP
PHP采集相关教程之一 CURL函数库
2010/02/15 PHP
360通用php防护代码(使用操作详解)
2013/06/18 PHP
非常全面的php日期时间运算汇总
2015/11/04 PHP
Zend Framework教程之Resource Autoloading用法实例
2016/03/08 PHP
老生常谈PHP 文件写入和读取(必看篇)
2017/05/22 PHP
javascript一点特殊用法
2008/05/28 Javascript
最短的javascript:地址栏载入脚本代码
2011/10/13 Javascript
javaScript 删除字符串空格多种方法小结
2012/10/24 Javascript
简单的邮箱登陆的提示效果类似于yahoo邮箱
2014/02/26 Javascript
javascript随机之洗牌算法深入分析
2014/06/07 Javascript
Angular 中 select指令用法详解
2016/09/29 Javascript
利用Node.JS实现邮件发送功能
2016/10/21 Javascript
jQuery插件DataTable使用方法详解(.Net平台)
2016/12/22 Javascript
初探nodeJS
2017/01/24 NodeJs
3分钟快速搭建nodejs本地服务器方法运行测试html/js
2017/04/01 NodeJs
微信小程序列表渲染功能之列表下拉刷新及上拉加载的实现方法分析
2017/11/27 Javascript
原生JS实现DOM加载完成马上执行JS代码的方法
2018/09/07 Javascript
微信小程序云函数使用mysql数据库过程详解
2019/08/07 Javascript
原生js实现移动小球(碰撞检测)
2020/12/17 Javascript
[01:18]DOTA2超级联赛专访hanci ForLove淘汰感言曝光
2013/06/04 DOTA
[01:10]DOTA2次级职业联赛 - U5战队宣传片
2014/12/01 DOTA
Python实现分割文件及合并文件的方法
2015/07/10 Python
浅谈Python中用datetime包进行对时间的一些操作
2016/06/23 Python
python requests 使用快速入门
2017/08/31 Python
django定期执行任务(实例讲解)
2017/11/03 Python
Python实现简单求解给定整数的质因数算法示例
2018/03/25 Python
css3实现3D文本悬停改变效果的示例代码
2019/01/16 HTML / CSS
html5 跨文档消息传输示例探讨
2013/04/01 HTML / CSS
HTML5实现页面切换激活的PageVisibility API使用初探
2016/05/13 HTML / CSS
英国时尚运动品牌的合集:The Sports Edit
2017/12/20 全球购物
经济实惠的豪华背包和行李袋:Packs Project
2018/10/17 全球购物
迪奥美国官网:Dior美国
2019/12/07 全球购物
入党转预备思想汇报
2014/01/07 职场文书
大二学生学习个人自我评价
2014/01/19 职场文书
个人收入证明范本
2015/06/12 职场文书