对于它可能的影响,我尝试了以下测试:
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