是什么让相同数量的循环有不同的性能?

what makes the same number of loops have different performance?

var t1 = new Date().getTime()
for (let i = 0; i < 100; i++) {
  for (let j = 0; j < 1000; j++) {
    for (let k = 0; k < 10000; k++) {
    }
  }
}
var t2 = new Date().getTime()
console.log('first time', t2 - t1)

for (let i = 0; i < 10000; i++) {
  for (let j = 0; j < 1000; j++) {
    for (let k = 0; k < 100; k++) {

    }
  }
}
var t3 = new Date().getTime()
console.log('second time', t3 - t2) 

如您所见,上面的两个 for 循环看起来执行时间相同。但事实上,第二个循环比第一个循环需要更多的时间来执行。是什么让引擎盖下的差异?

在第一个循环中,您正在执行:

  • 令j=0; //100次
  • 令k=0; //100*1000=100000次

在第二个循环中,您正在执行:

  • 令j=0; //10000次
  • 令k=0; //10000*1000=10000000次

第二个循环有 9909900 个以上的变量初始化,因此预计 运行 更长。