gpt4 book ai didi

javascript - String.concat 是否比连接字符串的 Array 方法慢

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:52:04 25 4
gpt4 key购买 nike

JavaScript 中的字符串是不可变的。通过网络和 here on Stack Overflow as well ,我遇到了连接字符串的数组方法:

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');

Firefox 3.6.3 在 Mac OS X 10.6.2 上的结果:

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

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

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

Mac OS X 10.6.2 上 Chrome 5.0 的结果:

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

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

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

更新:

如果我们计算 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');

Firefox 3.6.3 在 Mac OS X 10.6.2 上的结果:

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

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

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

Mac OS X 10.6.2 上 Chrome 5.0 的结果:

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

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

10k concat: 19ms
10k join: 60ms

关于javascript - String.concat 是否比连接字符串的 Array 方法慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2703383/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com