js字符串拼接性能检测

从网上搜索到,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:

字符串拼接方式耗时:2毫秒      字符串拼接方式耗时:12毫秒
字符串拼接方式耗时:3毫秒      字符串拼接方式耗时:1毫秒
字符串拼接方式耗时:1毫秒      字符串拼接方式耗时:3毫秒
 
firfox:
字符串拼接方式耗时:7毫秒     字符串拼接方式耗时:8毫秒
字符串拼接方式耗时:6毫秒     字符串拼接方式耗时:8毫秒
字符串拼接方式耗时:6毫秒     字符串拼接方式耗时:8毫秒

 ie:

字符串拼接方式耗时:11毫秒   字符串拼接方式耗时:5毫秒 

字符串拼接方式耗时:8毫秒     字符串拼接方式耗时:5毫秒 

字符串拼接方式耗时:7毫秒     字符串拼接方式耗时:5毫秒

opera

字符串拼接方式耗时:9毫秒    字符串拼接方式耗时:5毫秒
字符串拼接方式耗时:5毫秒    字符串拼接方式耗时:9毫秒
字符串拼接方式耗时:7毫秒    字符串拼接方式耗时:2毫秒
 
4: 当拼接字符串的长度string和拼接字符串的个数time都比较大时;
test("abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz",50000)

chome:

字符串拼接方式耗时:9毫秒      字符串拼接方式耗时:10毫秒
字符串拼接方式耗时:8毫秒      字符串拼接方式耗时:20毫秒
字符串拼接方式耗时:4毫秒      字符串拼接方式耗时:29毫秒
 
firfox:
字符串拼接方式耗时:6毫秒     字符串拼接方式耗时:24毫秒
字符串拼接方式耗时:4毫秒     字符串拼接方式耗时:24毫秒
字符串拼接方式耗时:5毫秒     字符串拼接方式耗时:27毫秒

 ie:

字符串拼接方式耗时:6毫秒     字符串拼接方式耗时:14毫秒 

字符串拼接方式耗时:7毫秒     字符串拼接方式耗时:11毫秒 

字符串拼接方式耗时:6毫秒     字符串拼接方式耗时:13毫秒

opera

字符串拼接方式耗时:13毫秒    字符串拼接方式耗时:15毫秒
字符串拼接方式耗时:7毫秒      字符串拼接方式耗时:15毫秒
字符串拼接方式耗时:19毫秒    字符串拼接方式耗时:18毫秒
 
总结:
(一)当字符串的个数比较小时,用加法运算和数组方式都不成问题,选择自己喜欢的方式
(二)当字符串的个数比较大时,字符串的长度比较大,最好选择加法运算(从数据上分析,加法运算所用时间少);字符串的长度比较小,chome、firfox中使用加法运算花费时间更少,ie、opera中使用数组方式花费时间更少。
 
posted @ 2014-05-05 13:03  outside  阅读(612)  评论(0编辑  收藏  举报