为了账号安全,请及时绑定邮箱和手机立即绑定

第 50 题:为什么 for 循环嵌套顺序会影响性能?

标签:
Html5 CSS3 面试

核心:循环次数少的放在外层,减少内层变量的操作次数

// 嵌套方式一
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 次

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消