如果带有return的语句:更快使用elseif?

时间:2012-06-18 18:16:41

标签: performance if-statement

通常做得更好/更快:

if (condition) return a
else if (condition2) return b
else return c

if (condition) return a
if (condition2) return b
return c

他们都做同样的事情但我很好奇是否在比较这两个片段时还需要记住其他分支

6 个答案:

答案 0 :(得分:3)

由于执行的代码总量相同,因此不会有任何区别。就代码的可读性而言,我强烈建议使用“else”版本。在这个版本中你直接看到(因为“else”)第一个条件不是真的,以便执行else if分支。在第二个例子中,你可能会在阅读时错过“返回”,并对代码检查几个条件的原因感到困惑。

答案 1 :(得分:1)

差异可以忽略不计/无。

在对代码进行性能调优时,我会在其他地方看到诚实。

答案 2 :(得分:1)

使用最易读和可维护的内容。您可能不会发现两个版本的代码之间存在任何差异,因为编译器通常擅长为您进行这些类型的分支优化。因此,在两种情况下,得到的编译代码可能基本相同。留给编译器进行这种微优化。

答案 3 :(得分:0)

老实说,我尝试过测试,但没有发现任何差异。

我认为这是个人偏好而不是其他任何东西,第二个是更少编写的代码...

答案 4 :(得分:0)

这种情况没有区别,但以下示例不同:

    if (condition) do work1
    else if (cond2) do work2
    else if (cond3) do work3
    else do work4
    more work

如果第一个条件为真,那么程序将转到“更多工作”语句并且没有其他条件被测试,但是在下面所有条件都将被测试,即使第一个条件为真(除了其他条件):

    if (condition) do work1
    if (cond2) do work2
    if (cond3) do work3
    else work4

    more work

这是唯一的区别,除非有成千上万的if语句,否则它不会对速度造成太大影响。

两者都有不同的用例:

Run first one where you want to stop as soon as a true condition is encountered.

Run second one when you want to test more conditions even after you have found
a true condition.

答案 5 :(得分:-1)

ELSE IF意味着如果之前的IF语句不成立,那么尝试'this'。根据我的经验,如果您只需要检查一个条件,IF的工作速度会快得多。 ELSE IF更适合不同的条件。