javascript concat vs push benchmark

时间:2014-08-16 11:40:44

标签: javascript performance

jsperf上有这个测试: http://jsperf.com/javascript-array-concat-vs-push

它表明concat更快,但如果你在初始数组中得到那个结果,而不使用第三个变量,那么concat会慢得多:

for (i = 10000; i > 0; i--) {
   arr1 = arr1.concat(arr2);
}

即使您使用本地var,但名称相同,结果也是相同的:

for (i = 10000; i > 0; i--) {
   var arr1 = arr1.concat(arr2);
}

有人可以解释一下吗?

1 个答案:

答案 0 :(得分:4)

你正在循环中改变原始数组。

for (i = 10000; i > 0; i--) {
   arr1 = arr1.concat(arr2);
}

这里arr1的大小不断增长,随着数组变大,它会变慢,因为它必须分配更多的内存。

for (i = 10000; i > 0; i--) {
   var arr3 = arr1.concat(arr2);
}

在这里,您将分配一个新变量,而不会改变arr1arr2,以便测试连接两个小数组的性能。

arr1案例中,您测试了将一个大型数组与一个小型数组连接的性能。