boolean a = false, b = true;
if ( a && b ) { ... };
大多数编程语言中,由于a为false,所以b不会被计算,因此a && b不可能为真。我的问题是,短路是否从体系结构角度来看更慢?在流水线中,您只需等待结果以确定是否应评估b,还是最好使用嵌套的if语句?这有帮助吗?此外,有人知道短路求值通常称为什么吗?我之所以问这个问题,是因为我发现我的编程朋友从未听说过短路求值,并表示它并不常见,也没有出现在许多语言中,并且在流水线中效率低下。我对最后一个问题不确定,所以向大家请教!
好的,我想用一个不同的例子来解释一下我的朋友可能的观点。他认为,由于在以下语句中同时计算:
```python result = (condition_a() and condition_b()) or condition_c() ```
必须先计算条件a和b,然后才能计算条件c。而如果使用嵌套的if语句,则可以在满足条件时立即计算条件c,并跳过其他条件的计算。这样做是否更快?
(a) if ( ( a != null ) && ( a.equals(b) ) ) { ... }
如果存在会导致系统崩溃的代码,那么没有短路计算的架构(因此不允许上述语句)将更快地处理这些语句:
(b) if ( ( a == 4 ) && ( b == 5 ) )
因为如果不能并行执行 (a),那么也就不能并行执行 (b)。在这种情况下,允许短路求值的语言比不允许短路求值的语言更慢。
我不知道这是否正确。
谢谢