почему одно и то же количество петель имеет разную производительность?

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 будут иметь одинаковое время выполнения. Но на самом деле для выполнения второго цикла потребуется больше времени, чем для первого. В чем разница под капотом?

1 ответ

Решение

В первом цикле вы выполняете:

  • пусть j=0; //100 раз
  • пусть k=0; //100*1000=100000 раз

Во втором цикле вы выполняете:

  • пусть j=0; //10000 раз
  • пусть k=0; //10000*1000=10000000 раз

Второй цикл имеет на 9909900 дополнительных инициализаций переменных, и поэтому ожидается, что он будет работать дольше.

Другие вопросы по тегам