从网上搜索到,js字符串拼接有两种方式
第一种:使用加法运算符拼接,例如:str = 'a' + 'b';
第二种:使用数组存储字符串,然后通过方法join拼接,例如 arr = ['a','b'];str = arr.join("");
由于不同浏览器对字符串有不同的存储方式,造成这两种方式有不同的性能问题。影响性能的主要有两个变量,每个拼接字符串的长度和拼接字符串的个数(也即循环拼接次数)。
以下代码在每个浏览器的最新版本中检查不同方式的拼接性能,对每种方式所花费的时间进行对比,来粗略评估两种在不同影响变量下的性能问题。
function test(string,time){
var str = "", arr = [], before, after; before = new Date(); for (var i = 0; i < time; i++) { str += string; }; after = new Date(); console.log("字符串拼接方式耗时:"+(after.getTime()- before.getTime())+"毫秒;"); before = new Date(); for (var i = 0; i < time; i++) { arr[i] = string; }; str = arr.join(""); after = new Date(); console.log("字符串拼接方式耗时:"+(after.getTime()- before.getTime())+"毫秒;"); }1: 当拼接字符串的长度string和拼接字符串的个数time比较小时(每个浏览器检查三组);
test("abc",100);
chome,firfox,ie(10),opera中几乎很够快速的完成,所花费的时间为零,没有性能问题。
2:当拼接字符串的长度string比较大,拼接字符串的个数time比较小时;
test("abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz",100);
chome,firfox,ie,opera中几乎很够快速的完成,所花费的时间为零,没有性能问题。
3: 当拼接字符串的长度string比较小,拼接字符串的个数time比较大时;
test("abc",50000);
chome: