条件语句中的概率


Probability in conditional statements

让我们取一个名为someInt的变量,它可能有任何数值。我们需要检查它是否为0。

if($someInt!=0) {
  // someInt is not 0, this is the most probable
} else {
  // someInt is 0.
}
//VS
if($someInt==0) {
  // highly unlikely... perform a jump
} else {
}

哪种方式更优化?除了可读性之外,还有什么不同吗?

我想知道的另一件相关的事情是:我有一个习惯,就是用这种方式检查数组是否有项目:

if($myArray.length != 0) {
}
 // instead of
if($myArray.length > 0) {
}

请注意"!="。由于array.length只能为0或大于0,"!="检查是否更为优化?我之所以这么问,是因为我在Visual Basic 6中一直都是这样做的,显然它在那里工作得更快。其他语言呢?

最可能的条件应该在顶部。通过这种方式,解析器跳过不太可能的情况,得到一个过于优化的应用程序。

你的第二个问题是微观优化。我怀疑它在性能方面会有什么不同。

对于if语句,情况越有可能,您应该将其放在if语句的更高位置,从可读性角度和性能角度来看,这更有意义。对于数组部分,$array.length>0更具可读性。但是,性能不应该是一个问题,因为不应该经常调用它,缓存结果比不断检查数组长度要好。