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