关于html:第-50-题为什么-for-循环嵌套顺序会影响性能

29次阅读

共计 929 个字符,预计需要花费 3 分钟才能阅读完成。

外围:循环次数少的放在外层,缩小内层变量的操作次数

// 嵌套形式一
function first() {let startTime = new Date().getTime();

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

    let endTime = new Date().getTime();

    return endTime - startTime + 'ms';
}

// 嵌套形式二
function second() {let startTime = new Date().getTime();

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

    let endTime = new Date().getTime();

    return endTime - startTime + 'ms';
}

console.log(first()); // 382ms
console.log(second()); // 501ms

嵌套形式一

  • i 执行 1 次 j 就会执行 1000 次 k 就会执行 1000 * 10000 次
  • i 执行 100 次 j 就会执行 100 1000 次 k 就会执行 100 1000 * 10000 次
  • 总次数 = i(100) + j(100,000) + k(1,000,000,000) = 1,000,100,100 次

循环体内执行次数为:1,000,100,100 次

嵌套形式二

  • i 执行 1 次 j 就会执行 1000 次 k 就会执行 1000 * 100 次
  • i 执行 10000 次 j 就会执行 10000 1000 次 k 就会执行 10000 1000 * 100 次
  • 总次数 = i(10,000) + j(10,000,000) + k(100,000,000) = 110,010,000 次

循环体内执行次数为:110,010,000 次

文章的内容 / 灵感都从下方内容中借鉴

  • 【继续保护 / 更新 500+ 前端面试题 / 笔记】https://github.com/noxussj/In…
  • 【大数据可视化图表插件】https://www.npmjs.com/package…
  • 【利用 THREE.JS 实现 3D 城市建模(珠海市)】https://3d.noxussj.top/

正文完
 0