IF语句和代码效率

时间:2011-10-22 12:54:45

标签: if-statement

这与任何问题无关,只是我在思考。代码中是否存在大量的IF语句意味着代码设计不良并降低了效率。

3 个答案:

答案 0 :(得分:1)

如果您真的想要优化代码,请注意以下几点:

if (complexCalculation(someVariable) > 10)
{
}
else if (complexCalculation(someVariable) > 5)
{
}

关键是,如果您尝试优化某些代码,请尝试在变量中“缓存”计算结果,而不是重复多次相同的计算

int cached = complexCalculation(someVariable);

if (cached > 10)
{
}
else if (cached > 5)
{
}

为什么这样?现在......如果complexCalculation基于其参数是确定性的(那么complexCalculation(N)== complexCalculation(N)总是,简单来说,用相同的参数调用它两次您将同时收到相同的结果始终)并且没有副作用(因此它不会修改任何其他内容),然后编译器可以自由地优化它。问题是,编译器经常无法验证函数是否具有确定性且没有副作用,并且非常少的语言(主要是函数语言,如F#,Haskell ......)可以很容易地告诉它编译器(在技术上,在函数语言中,所有函数都应该是确定性的,没有副作用:-))。

答案 1 :(得分:0)

理论上,许多'if'语句不会显着降低代码效率。代码只是确定表达式的布尔值,并决定是否继续。但是,如果迭代循环中有许多“if”语句,则可能会在效率方面造成更大的问题。

糟糕的设计是另一个我不会提及的问题(Ziminji比我更好地覆盖它)。

答案 2 :(得分:-1)

一般来说,很多“if”语句的存在被认为是糟糕的设计。考虑用多态替换条件。这是Martin Fowler的书“重构:改进现有代码的设计”(第255页)中的主题之一。如果您没有该书,请查看以下文章:http://sourcemaking.com/refactoring/replace-conditional-with-polymorphism