// Shifting the array and accessing 0
let sum = 0;
while(matrix.length > 0) {
sum += matrix[0][0];
matrix.shift();
}
// direct access
let sum = 0;
for (let i = 0; i < matrix.length; i++) {
sum += matrix[i][0];
}
https://jsperf.com/shift-vs-index-access
移动数组并访问0的速度比 在上述jsPerf链接的给定示例中直接访问。
shift()
不是O(n)
操作吗?
答案 0 :(得分:6)
不,不是更快。只是基准被打破了。 shift()
操作将清空matrix
数组,并且在第一次迭代后,您将在空数组上比较代码。
在基准测试中会更改数据结构的代码时,需要在每次测试运行时重新创建数据结构。 I've fixed your jsperf.com case和预期的shift
较慢(请注意,执行时间可能大部分花费在createMatrix
上,因此实际上 lot 较慢)