首页 > 解决方案 > 是什么让相同数量的循环具有不同的性能?

问题描述

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 循环的执行时间似乎相同。但事实上,第二个循环的执行时间比第一个循环要多。引擎盖下有何不同?

标签: javascriptperformancefor-loopnested-for-loop

解决方案


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

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

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

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

第二个循环有 9909900 多个变量初始化,因此预计运行时间更长。


推荐阅读