none
条件语句嵌套对性能有没有影响?(请教各位专家了) RRS feed

  • 问题

  • 像if语句,例如:

    1.if(a!=b)

           return;

       ...

    2.if(a==b)

      {

          ...

      }

     

    第二种写法有没有性能影响?


    snyod
    2011年9月23日 7:17

答案

全部回复

  • 楼主:)

    肯定有影响(因为需要判断什么,如果你第二个if里是一段程序代码块的话……)。

    但是如果代码量少,在if最后也有return,影响微乎其微。


    如果你有其它意见或私下交流,请直接发送maledong_work@foxmail.com;或者讨论(Talk)
    If you do not have QQ, please open the page and download it and click the image to talk or leave message for me.
    下载MSDN桌面工具(Vista,Win7)
    下载Technet桌面小工具(Vista,Win7)
    慈善点击,点击此处
    • 已标记为答案 snyod 2011年9月23日 7:35
    2011年9月23日 7:21
    版主
  • 是不是一般采用第一种写法?

    如果代码量大的话,不加return 影响会很大吗?


    snyod
    2011年9月23日 7:31
  • 看情况。肯定第一种比第二种要好。但是如果你一定要在返回之前处理某些复杂事物,那只能第二种了
    如果你有其它意见或私下交流,请直接发送maledong_work@foxmail.com;或者讨论(Talk)
    If you do not have QQ, please open the page and download it and click the image to talk or leave message for me.
    下载MSDN桌面工具(Vista,Win7)
    下载Technet桌面小工具(Vista,Win7)
    慈善点击,点击此处
    2011年9月23日 7:33
    版主
  • 我认为得看编译器的编译出得代码质量,试想,如果你把那些if...else...之类的用汇编来表达会怎么样?是不是还要看到底你用的是什么比较指令?总之,不管是“!=”还是“==”都需要进行一次比较,故此,就你说的这种情况来说几乎不会有影响。


    祝愿父母长命百岁!
    2011年10月4日 13:51
    1. 首先:任何语句都会对性能造成影响,任何语句都需要CPU时间去执行。
    2. 楼主提供的代码看起来像是进行逻辑判断用的,这个已经是最优的性能了,没有办法再进行优化。
    3. 条件嵌套一般指if嵌套,如:
                      if (a > b)
                      {
                          if (a - b > 20 && a -b <= 30)
                          {
                              if (a - b > 20 && a - b < 25)
                              { 
                                  //......
                                  //反复嵌套if进行判断
                              }
                          }
                          if (a - b > 30)
                          {
                              //......
                              //反复嵌套if进行判断
                          }
                      }<br/>
      
      这样做最大的问题在于嵌套的层次深了以后,代码不好理解, 而不是性能问题。从语句本身来讲,没有比if更底层的代码实现方式了,即使.NET的基类库(以及其他很多语言),很多地方也是采用了if做为条件判断的办法。
    4. 一般意义上的if“优化”是指:1、尽可能少的if嵌套(以防止自己或他人日后看不懂代码);2、可能性最大的if条件放在最外层(这样可以适当、相对的提高整体代码运行速度)
    5. 代码首先是写给人看的,其次才是写给机器看的。除非是及特殊的情况,否则在编码过程中,最优先考虑的应该是怎么样把代码写的简洁,让人容易看懂而不是起歧义。现在CPU的性能是很恐怖的,基本不用考虑性能问题,即使时高负载的程序,通过服务器集群也可以解决问题。一台很不错的服务器也不超过2万人民币,但是维护一个性能很棒、但是代码很费解的程序所花费的成本可以买上100甚至更多台高性能的服务器。
    • 已建议为答案 mazhou 2011年10月5日 9:32
    2011年10月4日 16:24