【发布时间】:2012-12-02 08:55:18
【问题描述】:
int i = 3;
这段代码有没有性能上的区别:
if(i == 2)
DoA();
if(i == 3)
DoB();
if(i == 4)
DoC();
还有这段代码:
if(i == 2)
DoA();
else if(i == 3)
DoB();
else if(i == 4)
DoC();
我想知道使用可选的 ELSE 是否会影响 CPU 理解代码的方式。我一直认为当我们使用第二种方法时,如果i 是2 那么CPU 不会检查其他两个条件,但是在第一种方法中虽然第一个条件为真(i == 2)但CPU 确实会检查第二和第三个条件。这是真的吗?
【问题讨论】:
-
确实如此。不过,请不要遭受过早的优化。做有意义的事,而不是更快的事。
-
@Mahdi jan,代码优化可能会为你解决这个问题,我认为上面的两个代码是相同的。
-
@JanDvorak 谢谢,我只是很好奇,我永远不会更改代码,只是想知道 BlackBox 中发生了什么。
-
更重要的是,在第二个案例中,您告诉我们读者,您希望这些案例是互斥的。在第一种情况下,我们必须检查
DoA()是否可能更改i。 -
@BoPersson 这也是一个非常聪明的观点,谢谢。但就我而言,
i是稳定的。
标签: c# if-statement cpu cil