在很多分支的情况下,if/else与switch/case哪个效率高?我认为是switch,而且我试验的结果也是switch高,但是有同事很肯定得跟我说switch是由if/else模拟出来的,效率必然没有if高。大家怎么认为呢?最好说出理由。

解决方案 »

  1.   

    switch吧~~~
    我一直这么认为的..
      

  2.   

    switch 效率高,  从汇编代码可以看出来switch 只计算一次值 然后都是test , jmp, if...else 是每个条件都要计算一遍的. 
      

  3.   

    switch 效率高,  从汇编代码可以看出来switch 只计算一次值 然后都是test , jmp, if...else 是每个条件都要计算一遍的. 这个要看条件为真的语句在哪吧 而且编译器都是可以优化的
      

  4.   

    分支多显然switch效率高,分支少则ifelse
      

  5.   

    不管分支多与少,switch效率都不会比ifelse低,最多相同。
      

  6.   

    switch的效率与分支数无关
    当只有分支比较少的时候,if效率比switch高(因为switch有跳转表)
    分支比较多,那当然是switch拉我记得在某本书上有这样的实验的
      

  7.   

    是啊,可以预先把条件结果计算出来,保存在变量中.
    这样是不用每次都计算条件了.
    ---------------------------------------------
    if(s1)
    {
    }
    else if(s2)
    {
    }s1 和 s2 会是一样的式子吗? 如果不是一样的,当然是到了这里就会计算一次. 全部计算出来也不太好吧? 如果很少走到下面这个if 里,那计算s2 不是浪费?
      

  8.   

    不要再问这种问题
    没意义
    你知道
    mov 比 jmp 快吗?
    jz  比 jmp 快吗?
    少一条代码就会比较快?
    CPU执行代码时会做优化
    分支预测等等....
    说说我听要怎样判断????
      

  9.   

    我本来就认为绝大多数情况下,switch要比if效率高,在这里大家帮我更肯定了这一点。