Javascript 字符串连接的性能探讨

内容摘要
这篇文章主要为大家详细介绍了Javascript 字符串连接的性能探讨,具有一定的参考价值,可以用来参考一下。

这是个老话题了,之所以再拿出来说,是因为浏览器一直在进步,以前最好的
文章正文

这篇文章主要为大家详细介绍了Javascript 字符串连接的性能探讨,具有一定的参考价值,可以用来参考一下。

这是个老话题了,之所以再拿出来说,是因为浏览器一直在进步,以前最好的方法现在不一定是最好的。

1 如何进行字符串连接?

首先让我们来回顾一下字符串连接的两种常用方法:1.1 使用字符串连接运算符常用的语言(如Java、C#、PHP等)都有字符串连接运算符,Javascript也不例外,代码示例:
var str = "";str = str + "a";
1.2 使用数组在常用的语言中,字符串连接运算的性能普遍不高,为此在C#中就专门提供了StringBuilder(Java中提供了StringBuffer)用于连接字符串。而在Javascript中就出现了通过Array模拟StringBuilder的方案。

var str = [];
for (var i = 0; i < 100; i++) {
  str[i] = "12345";
}
str = str.join("");

2 测试

下面通过复制字符串的过程来测试两种方法的性能:2.1 通过字符串连接运算符进行复制:

function copyByOperator(str, times) {
  var newStr = "";
  for (var i = 0; i < times; i++) {
    newStr += str;
  }
  return newStr;
}
2.2 通过数组进行复制:

function copyByArray(str, times) {
  var newStr = [];
  for (var i = 0; i < times; i++) {
    newStr[i] = str;
  }
  return newStr.join("");
}
str采用一段固定的HTML字符串,长度是61。2.3 IE下的测试考虑到IE的性能比较差,先用小的times值(6000)在IE 6、IE 7和IE 8下面测试。运行10次后取平均值,结果如下:IE6、7与IE8的测试结果相距甚远,很明显地,IE 8对字符串连接运算进行了优化,效率已经高于数组复制法。2.4 各种浏览器下的测试下面再用比较大的times值(50000)对最新版本的各种浏览器进行测试。

Javascript下字符串连接的性能

这个结果真是出人意料。IE 8下的字符串连接运算竟然把Chrome以外的浏览器都打败了,那些老说IE性能低下的可要注意点了。而在Chrome下也出现了字符串连接运算比数组复制法高效的情况。

3 总结

浏览器的性能在不断地提高,作为前端工程师,也要适时调整Javascript程序的优化策略,以获得最佳的性能。

注:关于Javascript 字符串连接的性能探讨的内容就先介绍到这里,更多相关文章的可以留意

代码注释

作者:喵哥笔记

IDC笔记

学的不仅是技术,更是梦想!