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 相关文章推荐
JavaScript中的16进制字符(改进)
Nov 21 Javascript
Javascript实现DIV滚动自动滚动到底部的代码
Mar 01 Javascript
浅谈javascript中的闭包
May 13 Javascript
jQuery 如何给Carousel插件添加新的功能
Apr 18 Javascript
vue开发心得和技巧分享
Oct 27 Javascript
JavaScript中双向数据绑定详解
May 03 Javascript
Angular2.js实现表单验证详解
Jun 23 Javascript
JavaScript实现的原生态兼容IE6可调可控滚动文字功能详解
Sep 19 Javascript
webuploader实现上传图片到服务器功能
Aug 16 Javascript
谈谈JavaScript中super(props)的重要性
Feb 12 Javascript
vue+element-ui+axios实现图片上传
Aug 20 Javascript
解决Vue-Router升级导致的Uncaught (in promise)问题
Aug 07 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
ThinkPHP写第一个模块应用
2012/02/20 PHP
JS异常处理try..catch语句的作用和实例
2014/05/05 PHP
CentOS 安装 PHP5.5+Redis+XDebug+Nginx+MySQL全纪录
2015/03/25 PHP
PHP getallheaders无法获取自定义头(headers)的问题
2016/03/23 PHP
php基于dom实现读取图书xml格式数据的方法
2017/02/03 PHP
关于php支持的协议与封装协议总结(推荐)
2017/11/17 PHP
Firefox和IE浏览器兼容JS脚本写法小结
2008/07/07 Javascript
event对象的方法 兼容多浏览器
2009/06/27 Javascript
Extjs优化(二)Form表单提交通用实现
2013/04/15 Javascript
jquery预览图片实现鼠标放上去显示实际大小
2014/01/16 Javascript
js完美的div拖拽实例代码
2014/01/22 Javascript
用javascript替换URL中的参数值示例代码
2014/01/27 Javascript
jquery获取元素索引值index()示例
2014/02/13 Javascript
jQuery操作DOM之获取表单控件的值
2015/01/23 Javascript
弹出遮罩层后禁止滚动效果【实现代码】
2016/04/29 Javascript
javascript宿主对象之window.navigator详解
2016/09/07 Javascript
jQuery内存泄露解决办法
2016/12/13 Javascript
微信小程序实战之运维小项目
2017/01/17 Javascript
bootstrap 通过加减按钮实现输入框组功能
2017/11/15 Javascript
详解如何创建并发布一个 vue 组件
2018/11/08 Javascript
JavaScript 几种循环方式以及模块化的总结
2020/09/03 Javascript
JavaScript 防抖和节流遇见的奇怪问题及解决
2020/11/20 Javascript
python3 shelve模块的详解
2017/07/08 Python
python使用正则表达式来获取文件名的前缀方法
2018/10/21 Python
SELENIUM自动化模拟键盘快捷键操作实现解析
2019/10/28 Python
Python 字节流,字符串,十六进制相互转换实例(binascii,bytes)
2020/05/11 Python
Python如何输出整数
2020/06/07 Python
浅析pandas随机排列与随机抽样
2021/01/22 Python
webapp字号大小跟随系统字号大小缩放的示例代码
2018/12/26 HTML / CSS
美国婚戒购物网站:Anjays Designs
2017/06/28 全球购物
优秀食品类广告词
2014/03/19 职场文书
单位未婚证明范本
2014/11/25 职场文书
优秀教师申报材料
2014/12/16 职场文书
教师学期末个人总结
2015/02/13 职场文书
借钱欠条怎么写
2015/07/03 职场文书
MySQL 使用自定义变量进行查询优化
2021/05/14 MySQL