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

Javascript
一个加密JavaScript的开源工具PACKER2.0.2
渐变的Alert
用javascript操作xml
javascript读取xml
由prototype_1.3.1进入javascript殿堂-类的初探
不错的一个日期输入 动态
非常不错的一个javascript 类
用javascript获得地址栏参数的两种方法
提示广告代码
利用javascript查看html源文件
一个日历,兼容多种浏览器
禁止查看源文件的代码
JavaScript的面向对象(二)
JavaScript的面向对象(一)
二级域名转向类
event.x,event.clientX,event.offsetX区别
类似框架的js代码
一个层慢慢增高展开,有种向下滑动的效果
MSAgent 详细解说
多广告投放代码 推荐

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


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-12   浏览: 181 ::
收藏到网摘: 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两种方式结果相反,看来以后写连接优化还有注意浏览器呀