javascript concat 与 Push 基准测试

ovi*_*ovi 3 javascript performance

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

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

for (i = 10000; i > 0; i--) {
   arr1 = arr1.concat(arr2);
}
Run Code Online (Sandbox Code Playgroud)

即使您使用本地变量,但具有相同的名称,结果也是相同的:

for (i = 10000; i > 0; i--) {
   var arr1 = arr1.concat(arr2);
}
Run Code Online (Sandbox Code Playgroud)

有人可以解释一下吗?

Ray*_*nos 5

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

for (i = 10000; i > 0; i--) {
   arr1 = arr1.concat(arr2);
}
Run Code Online (Sandbox Code Playgroud)

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

for (i = 10000; i > 0; i--) {
   var arr3 = arr1.concat(arr2);
}
Run Code Online (Sandbox Code Playgroud)

在这里,您将分配给一个新变量而不进行变异arr1arr2因此您可以测试连接两个小数组的性能。

arr1您测试将一个大数组与一个小数组连接起来的性能的情况下。

  • 你没有抓住重点。问题是关于 concat 与 push (5认同)
  • 不@ovi,问题可能被标题为“concat 与 push”,但实际问题是“有人能解释一下吗?” (5认同)