什么是更好的? if..else或多个简单if

时间:2010-11-09 22:45:55

标签: java if-statement performance

谈论java性能..什么更好? if..else或多个简单的if

if( condition ) {
  some_code;
  return value;
}
else if( condition ) {
  some_code;
  return value;
}
else if( condition ) {
  some_code;
  return value;
}
else {
  some_code;
  return value;
}

if( condition ) {
  some_code;
  return value;
}

if( condition ) {
  some_code;
  return value;
}

if( condition ) {
  some_code;
  return value;
}

some_code;    
return value;

对你的想法感兴趣

Thnx!

5 个答案:

答案 0 :(得分:16)

在性能方面没有区别。选择最易读的选项,可以取决于代码的作用。

一般不要担心这些微观优化。只有在您确定存在需要修复的性能问题后才能进行优化。

  

“我们应该忘记效率低下,大约97%的时间说:premature optimization是所有邪恶的根源。” -Donald Knuth

答案 1 :(得分:1)

如果这是一个没有返回值的函数,那么你给出的if ... else示例不需要return。在这种情况下,if ... else将更容易阅读。

此外,if ... else应该是首选,因为它明确表明这些情况是互斥的。

如果这里存在性能差异,那么你的编译器/解释器很糟糕。

答案 2 :(得分:0)

我确信单个if会更好,因为无论何时遇到真正的条件,它都可以安全地跳过其他else替代方案,因为它们不会被执行。如果您使用多个if s,则无论如何都必须评估所有后续条件(即使我认为您假设它们是相互排斥的。)

答案 3 :(得分:0)

取决于具体情况。

如果条件互斥,请使用else。这将导致Java在发现真实的条件之后不检查任何条件。

如果它们不相互排斥,那么使用if列表而不会导致多个案例发生。

在你的情况下,每个回报中的表现都是相同的,因为无论如何都需要进行相同数量的比较。

答案 4 :(得分:0)

我不担心这里的性能与代码可读性和可维护性一样多。如前所述,编译代码后性能基本相同。

我更倾向于更清楚地了解我的情况,而不是允许行为隐含地“堕落”。

此外,单个if不会比if else更快地进行评估。如果情况属实,则永远不会检查else路径。