javascript 字符串连接的性能问题(多浏览器)
2010-01-20 12:48
896 查看
由于最近项目中碰到了javascript 字符串连接的性能问题,所以,整理出来和大家分享下,如有不同观点,请大家多多指教
<html>
<head>
<title>Example</title>
</head>
<body>
<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.
<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("
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
在IE6,IE7下测试使用StringBuffer比使用加号确实可以节省50%~66%的时间,在IE8下几乎没什么影响(经测试执行结果不是很稳定),但在火狐FF3.5上,Opera浏览器上,chrome浏览器上结果却刚好相反,“+”运算明显要高于我们写的StringBuffer方法,而且也是50%的差距。所以,当我们处理javascript字符串的连接优化的时候,一定要区分浏览器。
<html>
<head>
<title>Example</title>
</head>
<body>
<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.
<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("
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
在IE6,IE7下测试使用StringBuffer比使用加号确实可以节省50%~66%的时间,在IE8下几乎没什么影响(经测试执行结果不是很稳定),但在火狐FF3.5上,Opera浏览器上,chrome浏览器上结果却刚好相反,“+”运算明显要高于我们写的StringBuffer方法,而且也是50%的差距。所以,当我们处理javascript字符串的连接优化的时候,一定要区分浏览器。
相关文章推荐
- javascript 字符串连接的性能问题(多浏览器)
- javascript 字符串连接的性能问题(多浏览器)
- 你必须知道的JavaScript 中字符串连接的性能的一些问题
- javascript字符串连接性能的问题
- javascript字符串连接性能的问题
- 你必须知道的JavaScript 中字符串连接的性能的一些问题
- 你不得不知道的关于JavaScript 中字符串连接的性能问题
- 你不得不知道的关于JavaScript 中字符串连接的性能问题
- JavaScript 字符串连接性能优化
- JavaScript 字符串连接性能优化
- Java字符串连接操作的性能问题
- javascript中字符串连接的性能
- Javascript 字符串浏览器兼容问题
- 比较javascript两种字符串连接的性能
- 温故知新――JavaScript中的字符串连接问题最全总结(推荐)
- VBS中的字符串连接的性能问题
- ECMAScript字符串连接性能问题
- 数组方法解决JS字符串连接性能问题有争议
- JavaScript中字符串连接性能分析
- 关于javascript字符串连接性能