当前位置: 首页 > 图文教程 > 网络编程 > Javascript > javascript 字符串连接的性能问题(多浏览器)

Javascript
写的htc的数据表格
幻宇的层模拟窗口效果-提供演示和下载
javascript 播放器 控制
一个无限级XML绑定跨框架菜单(For IE)
innerHTML,outerHTML,innerTEXT三者之间的区别
无间断滚动的新闻文章列表 多浏览器兼容
图片连续不间断滚动像册
关于图片验证码设计的思考
Js之软键盘实现(js源码)
js技巧收集(200多个) 超强推荐
图片自动播放也可通过按钮控制显示
照片各部分的彩色与黑白交替更换
select发展史 超强
无聊,写了个日历程序,欢迎拍砖
greybox:不开新窗口看新的网页
nicejforms:美化表单不用愁
用jquery来定位
动态调用css文件:jquery的应用
用YUI做了个标签浏览效果
JS轻松实现CSS设置,DIV+CSS常用CSS设置

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


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-12   浏览: 284 ::
收藏到网摘: n/a

今天看了javascript 高级程序设计 谈到了字符串连接的性能问题 书中附带的测试代码如下
复制代码 代码如下:

<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两种方式结果相反,看来以后写连接优化还有注意浏览器呀