for循环的优化

一、嵌套for循环--外小内大原则

    //优化前
    for(var j=0;j<100;j++{
        for(var i=0;i<10;i++){
        }
    }
    
    //优化后
    for(var i=0;i<10;i++){
        for(var j=0;j<100;j++){
        }
    }

 二、消除循环终止判断时的方法调用

    /* 优化前 */
    for(var i=0;i<arr.length;i++){   
    }
    /* 优化一 将arr.length的计算提取到循环外*/
    var len=arr.length;
    for(var i=0;i<len;i++){
    } 
    优点:不必每次都计算 list 的长度
    缺点:m 的作用域不够小,违反了最小作用域原则。
         不能在 for 循环中操作 list 的大小,比如除去或新加一个元素


    /* 优化二 增加一步对arr.length的计算*/
    for(var i=0;len=arr.length;i<len;i++){
    }
    优点:不必每次都计算,变量的作用域遵循最小范围原则。


    /* 优化三 采用倒序写法*/
    for(var i=arr.length-1;i>0;i--){
    }
    优点:不必每次都计算,变量的作用域遵循最小范围原则。
    缺点: 结果的顺序会反 。
          看起来不习惯,不易读懂。

 三、循环嵌套,提取不必要的循环

    var a,b;
    for(var i=0;i<10;i++){
       i=i*a*b
    }


    /* 优化 */
    var c=a*b;
    for(var i=0;i<10;i++){
       i=i*c
    }
    优点:代码中 a*b 与循环无关,为避免重复计算,应该把它放到外面。

 四、异常处理写在循环外面

    /* 优化前 */
    for(var i=0;i<10;i++){
        try{ }
        catch(Exception e){
        }
    }
    /* 优化后 */
    try{
        for(var i=0;i<10;i++){
        }
    }
    catch(Exception e){ }
    说明:捕获异常是很耗资源的,所以不能将 try catch 放到循环内部,优化后同样有好几个数量级的提升。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
为了优化 for 循环,可以考虑以下几种方法: 1. 使用迭代器代替下标循环:在循环中使用迭代器,而不是使用下标来访问列表元素,可以减少下标计算的开销,并且在处理大型列表时可以提高性能。 2. 避免重复计算:如果在循环中需要计算某些值,可以考虑在循环之前计算这些值,并将它们存储在变量中。这样可以避免在每次迭代时重复计算。 3. 合并循环:如果有多个循环迭代相同的列表,可以考虑将它们合并为一个循环,以减少循环的数量和访问列表的次数。 4. 使用并行化技术:如果循环中的计算可以并行执行,可以使用并行化技术,如多线程或多进程,以加速循环的执行。 5. 优化循环体内部的代码:循环体内部的代码也可能是性能瓶颈,可以使用一些优化技术来加速代码的执行,如使用更高效的算法或数据结构,减少内存分配和释放等。 下面是一个 for 循环优化的示例代码: ```python import time # 原始代码 start_time = time.time() sum = 0 for i in range(1000000): sum += i end_time = time.time() print("原始代码执行时间:", end_time - start_time) # 优化后的代码 start_time = time.time() sum = sum(range(1000000)) end_time = time.time() print("优化后的代码执行时间:", end_time - start_time) ``` 在上面的示例代码中,我们使用了内置函数 `sum` 来代替 for 循环来计算 0 到 999999 的和。这种方法比 for 循环,因为sum函数在 C 语言中实现,比 Python 解释器更

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值