zoukankan      html  css  js  c++  java
  • 循环语句的效率

    C++/C循环语句中,for语句使用频率最高,while语句其次,do语句很少用。本节重点论述循环体的效率。提高循环体效率的基本办法是降低循环体的复杂性。

    l         【建议4-4-1】在多重循环中,如果有可能,应当将最长的循环放在最内层,最短的循环放在最外层,以减少CPU跨切循环层的次数。例如示例4-4(b)的效率比示例4-4(a)的高。

    for (row=0; row<100; row++)

    {

    for ( col=0; col<5; col++ )

    {

    sum = sum + a[row][col];

    }

    }

    for (col=0; col<5; col++ )

    {

    for (row=0; row<100; row++)

    {

        sum = sum + a[row][col];

    }

    }

    示例4-4(a) 低效率:长循环在最外层           示例4-4(b) 高效率:长循环在最内层

    l         【建议4-4-2】如果循环体内存在逻辑判断,并且循环次数很大,宜将逻辑判断移到循环体的外面。示例4-4(c)的程序比示例4-4(d)多执行了N-1次逻辑判断。并且由于前者老要进行逻辑判断,打断了循环“流水线”作业,使得编译器不能对循环进行优化处理,降低了效率。如果N非常大,最好采用示例4-4(d)的写法,可以提高效率。如果N非常小,两者效率差别并不明显,采用示例4-4(c)的写法比较好,因为程序更加简洁。

    for (i=0; i<N; i++)

    {

    if (condition)

        DoSomething();

    else

        DoOtherthing();

    }

    if (condition)

    {

    for (i=0; i<N; i++)

        DoSomething();

    }

    else

    {

        for (i=0; i<N; i++)

        DoOtherthing();

    }

    表4-4(c) 效率低但程序简洁                表4-4(d) 效率高但程序不简洁

  • 相关阅读:
    SqlDependency和SqlCacheDependency的若干说明
    sublime 3 随笔
    [有得]解决redmine写操作很慢的问题
    Java双重循环
    使用 Docker 打包 Rust Web 服务
    Centos8.3、hadoop-2.6.4 简单的日志分析实验
    广域网数据交换的三种方式
    计算机的起源与发展
    推荐两款生成数据库表结构说明文档工具
    Centos8.3、docker部署springboot项目实战记录
  • 原文地址:https://www.cnblogs.com/byfei/p/3112213.html
Copyright © 2011-2022 走看看