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 AOP 实现ajax回调函数使用比较方便
Nov 20 Javascript
jQuery滚动加载图片效果的实现
Mar 06 Javascript
简单几行JS Code实现IE邮件转发新浪微博
Jul 03 Javascript
自己编写的类似JS的trim方法
Oct 09 Javascript
javascript Array 数组常用方法
Apr 05 Javascript
jQuery插件slick实现响应式移动端幻灯片图片切换特效
Apr 12 Javascript
用jQuery.ajaxSetup实现对请求和响应数据的过滤
Dec 20 Javascript
vue-rx的初步使用教程
Sep 21 Javascript
详解vue中this.$emit()的返回值是什么
Apr 07 Javascript
重学 JS:为啥 await 不能用在 forEach 中详解
Apr 15 Javascript
jQuery实现的鼠标拖动画矩形框示例【可兼容IE8】
May 17 jQuery
vue3如何优雅的实现移动端登录注册模块
Mar 29 Vue.js
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
我的论坛源代码(二)
2006/10/09 PHP
PHP的foreach中使用引用时需要注意的一个问题和解决方法
2014/05/29 PHP
PHP+Ajax检测用户名或邮件注册时是否已经存在实例教程
2014/08/23 PHP
PHP中Notice错误常见解决方法
2017/04/28 PHP
提升你网站水平的jQuery插件集合推荐
2011/04/19 Javascript
使用Grunt.js管理你项目的应用说明
2013/04/24 Javascript
让页面上两个div中的滚动条(滑块)同步运动示例
2013/08/07 Javascript
实现只能输入数字的input不用replace方法
2013/09/12 Javascript
JavaScript图片放大技术(放大镜)实现代码分享
2013/11/14 Javascript
jQuery点击自身以外地方关闭弹出层的简单实例
2013/12/24 Javascript
JS实现的新浪微博大厅文字内容滚动效果代码
2015/11/05 Javascript
基于vuejs+webpack的日期选择插件
2020/05/21 Javascript
js无提示关闭浏览器窗口的两种方法分析
2016/11/06 Javascript
vue.js 图片上传并预览及图片更换功能的实现代码
2018/08/27 Javascript
详解Axios 如何取消已发送的请求
2018/10/20 Javascript
详解Ant Design of React的安装和使用方法
2018/12/27 Javascript
JavaScript函数的4种调用方法实例分析
2019/03/05 Javascript
Vue实现input宽度随文字长度自适应操作
2020/07/29 Javascript
vue a标签点击实现赋值方式
2020/09/07 Javascript
[30:51]DOTA2上海特级锦标赛主赛事日 - 3 胜者组第二轮#1Liquid VS MVP.Phx第一局
2016/03/04 DOTA
[00:32]2018DOTA2亚洲邀请赛VGJ.T出场
2018/04/03 DOTA
pygame播放音乐的方法
2015/05/19 Python
Python实现Youku视频批量下载功能
2017/03/14 Python
详解Python进阶之切片的误区与高级用法
2018/12/24 Python
对python中xlsx,csv以及json文件的相互转化方法详解
2018/12/25 Python
如何使用pyinstaller打包32位的exe程序
2019/05/26 Python
Django实现文件上传和下载功能
2019/10/06 Python
python的time模块和datetime模块实例解析
2019/11/29 Python
python wav模块获取采样率 采样点声道量化位数(实例代码)
2020/01/22 Python
利用Python pandas对Excel进行合并的方法示例
2020/11/04 Python
类如何去实现接口
2013/12/19 面试题
一些高难度的SQL面试题
2016/11/29 面试题
简单通用的简历自我评价
2014/09/21 职场文书
公安交警中队队长个人对照检查材料思想汇报
2014/10/05 职场文书
物业工程部岗位职责
2015/02/11 职场文书
城管年度个人总结
2015/02/28 职场文书