if语句的最佳排列是什么?

时间:2014-04-02 00:08:57

标签: performance

如果我有例如:

if(a<50){A}    
if(a<20){B}
if(a<10){C}

对于这个集合,数字代表某个语句运行的时间百分比,并且它们都不是互斥的,我应该以什么方式安排我的if语句,以使程序尽可能高效? 我想要实现的是,如果a = 5我只想要C运行,如果我得到15,我只想要B运行。

我很清楚如何创建它,我想要的是最有效的方法。假设A,B,C ......采用相同的计算方式。此外,没有副作用被忽略,因为如果我运行C,它将覆盖A和B所做的。

谢谢

2 个答案:

答案 0 :(得分:0)

你的帖子是自相矛盾的。你说案件是:

  

不相互排斥

然后你说:

  

如果a = 5我只想要C运行,如果我得到15,我只想要B运行

是互斥的,你可以这样做:

     if(a<10){C} // do C and only C if a < 10
else if(a<20){B} // do B and only B if a >= 10 && a < 20
else if(a<50){A} // do A and only A if a >= 20 && a < 50

答案 1 :(得分:0)

这是微优化。您需要单独比较极小部分代码的性能。任何体面的编译器都会广泛地优化它。即使你可以改善表现,你也可能浪费了更多的时间来锻炼,而不是你在恢复表现方面的恢复。与所有优化一样,唯一可以确定的方法是分析不同的选项。对于此代码,这不值得练习。