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);
}
有人可以解释一下吗?
答案 0 :(得分:4)
你正在循环中改变原始数组。
for (i = 10000; i > 0; i--) {
arr1 = arr1.concat(arr2);
}
这里arr1
的大小不断增长,随着数组变大,它会变慢,因为它必须分配更多的内存。
for (i = 10000; i > 0; i--) {
var arr3 = arr1.concat(arr2);
}
在这里,您将分配一个新变量,而不会改变arr1
或arr2
,以便测试连接两个小数组的性能。
在arr1
案例中,您测试了将一个大型数组与一个小型数组连接的性能。