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

Javascript
javascript select 改变字的颜色
JS 字符串连接[性能比较]
jquery控制div下所有连接
JavaScript Date对象使用总结
JS面向对象、prototype、call()、apply()
JavaScript 动态将数字金额转化为中文大写金额
JQuery textlimit 显示用户输入的字符数 限制用户输入的字符数
DOM下的节点属性和操作小结
childNodes.length与children.length的区别
javascript Prototype 对象扩展
window.event.srcElement 得到事件源对象
JavaScript 下拉菜单实现代码
用js获取元素属性的代码
jQuery live
css+js下拉菜单
javascript 贪吃蛇(详细注释版)
Javascript 强制类型转换函数
js 进度条实现代码
JavaScript 验证浏览器是否支持javascript的方法小结
Js 控制表单域代码

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


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