zoukankan      html  css  js  c++  java
  • 请简述以下两个for 循环的优缺点

    今天笔试时候遇到一个问题,找到相似的。

    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(); }

    优点:程序简洁

    缺点:多执行了N-1次逻辑判断,并且打断了循环“流水线”作业,使得编译器不能对循环进行优化处理,降低了效率。

    优点:循环的效率高

    缺点:程序不简洁

    看到网络上还有一种回答: 

    前者:
    优点:程序简洁
    条件判断出现在For里面,意味着,即使我在dosomething()或dootherthing()这2个函数中改变了condition的值,For循环也能正确执行我的意图,因为它在每次循环中都会重新检测conditon的值并针对condition的值做不同动作,所谓以不变应万变,这是难能可贵的.   
    缺点:多执行了N-1次逻辑判断,并且打断了循环“流水线”作业,使得编译器不能对循环进行优化处理,降低了效率。
    如果condition一直未曾改变,我们可怜的if必须每次循环都判断一下condition的真假.牺牲了运行时效率.

    后者:
    优点:循环的效率高。只进行一次判断,运行时效率高.适合那种condition的值不会改变的情况.
    缺点:由于只在一开始进行一次判断,所以失去的改变condition的值的机会,也就是说,即使我在dosomething()中改变了condition的值为false,这个程序也不会改变它的判断,它依然执行着dosomething()的循环.我们不能随时更换我们需要进行的动作。这是牺牲了弹性。

    N较大时,建议采用后面这种写法,由于前者老要进行逻辑判断,打断了循环“流水线”作业,使得编译器不能对循环进行优化处理,降低了效率。

  • 相关阅读:
    Java:volatile 关键字的一点理解
    Java:准备学习的高级主题
    ASP.NET MVC:看 MVC 源码,学习:如何将 Area 中的 Controller 放到独立的程序集?
    Tomcat:基础安装和使用教程
    Javascript:看 Javascript 规范,学 this 引用,你会懂的。
    T4:T4 笔记 + Trait 示例
    Java:Java快速入门
    .NET:C#的匿名委托 和 Java的匿名局部内部类
    FAQ:如何修改领域模型?
    设计原则:对象之间的关系
  • 原文地址:https://www.cnblogs.com/jason-linux/p/10603471.html
Copyright © 2011-2022 走看看