String.concat 比连接字符串的数组方法慢吗

2024-03-24

JavaScript 中的字符串是不可变的。通过网络和Stack Overflow 上也有 https://stackoverflow.com/questions/51185/are-javascript-strings-immutable-do-i-need-a-string-builder-in-js,我遇到了连接字符串的数组方法:

var a = []; 

a.push(arg1,arg,2....);
console.log(a.join(''));

我知道这种方法比简单的方法更好

console.log(arg1 + arg2 +.....);

由于跳过创建中间对象的原因,但它如何更好地对抗:

arg1.concat(arg2,arg3.....);

对于它可能的影响,我尝试了以下测试:

var stringA = 'someStringA';
var stringB = 'someStringB';
var stringC = 'someStringC';

var arr = [];
arr.push(stringA);
arr.push(stringB);
arr.push(stringC);

// Testing the concat method
i = 0;
console.time('10k concat');
while (i < 10000) {
    stringA.concat(stringB, stringC);
    i++;
}
console.timeEnd('10k concat');

// Testing the join method
i = 0;
console.time('10k join');
while (i < 10000) {
    arr.join(''); 
    i++;
}
console.timeEnd('10k join');

结果是FirefoxMac OS X 10.6.2 上的 3.6.3:

10k concat: 20ms
10k join: 15ms

10k concat: 20ms
10k join: 16ms

10k concat: 19ms
10k join: 15ms

结果是ChromeMac OS X 10.6.2 上的 5.0:

10k concat: 22ms
10k join: 14ms

10k concat: 20ms
10k join: 16ms

10k concat: 20ms
10k join: 16ms

UPDATE:

如果我们要计算数组的创建次数join('')测试时,我们会看到不同的故事。测试:

var stringA = 'someStringA';
var stringB = 'someStringB';
var stringC = 'someStringC';

// Testing the concat method
i = 0;
console.time('10k concat');
while (i < 10000) {
    stringA.concat(stringB, stringC);
    i++;
}
console.timeEnd('10k concat');

// Testing the join method
i = 0;
console.time('10k join');
while (i < 10000) {
    var arr = [];
    arr.push(stringA);
    arr.push(stringB);
    arr.push(stringC);
    arr.join(''); 
    i++;
}
console.timeEnd('10k join');

结果是FirefoxMac OS X 10.6.2 上的 3.6.3:

10k concat: 20ms
10k join: 40ms

10k concat: 21ms
10k join: 40ms

10k concat: 20ms
10k join: 42ms

结果是ChromeMac OS X 10.6.2 上的 5.0:

10k concat: 20ms
10k join: 55ms

10k concat: 22ms
10k join: 60ms

10k concat: 19ms
10k join: 60ms
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

String.concat 比连接字符串的数组方法慢吗 的相关文章

随机推荐