38

现在,在你们都跳到我身上并说“你们过分关注性能”之前,让我在此表示,我更多地出于好奇而不是过分热心的性质提出这个问题。那就是说...

我很好奇使用 &&(“and”)运算符和嵌套 if 语句之间是否存在性能差异。另外,是否有实际的处理差异?即, && 是否总是处理这两个语句,或者如果第一个语句失败,它会停止@第一个语句?这与嵌套的 if 语句有何不同?

要清楚的例子:

A) && (“和”) 运算符

if(a == b && c == d) { ...perform some code fashizzle... }

与 B) 嵌套 if 语句

if(a == b) {
    if(c == d) { ...perform some code fashizzle... }
}
4

4 回答 4

31

性能差异可以忽略不计。当&&左侧表达式求值时,运算符不会检查右侧表达式false。但是,无论如何,&运营商都会检查两者,也许您的困惑是由这个事实引起的。

在这个特定的示例中,我只选择使用 的&&那个,因为这样更易读。

于 2010-06-27T02:49:41.447 回答
14

如果您担心性能,请确保它a==bc==d. 这样,该if语句将提前失败。

于 2010-06-27T02:55:03.853 回答
3

像嵌套if的 s,&&是懒惰的。
该表达式a && b将仅评估b是否 a为真。

因此,这两种情况在功能和性能上应该完全相同。

于 2010-06-27T02:48:40.343 回答
3

性能测试可能有助于解决问题: http ://jsperf.com/simey-if-vs-if

似乎两者之间的性能差异可以忽略不计;然而,正如@Gert 所提到的,早期失败确实可以改善事情。

于 2015-05-11T12:57:01.183 回答