boolean a = false, b = true;
if ( a && b ) { ... };
在大多数语言中,b
不会被评估,因为a
它是假的,所以a && b
不可能是真的。我的问题是,就架构而言,短路不会更慢吗?在管道中,您是否只是在等待获得 a 的结果以确定是否应评估 b 时停止?做嵌套ifs会更好吗?这甚至有帮助吗?
另外,有谁知道短路评估通常被称为什么?这个问题是在我发现我的编程朋友从未听说过短路评估并表示它不常见,在许多语言中都没有,并且在管道中效率低下之后出现的。最后一个我不确定,所以请教各位!
好的,我想一个不同的例子来解释我的朋友可能来自哪里。他认为,由于并行评估如下语句:
(a) if ( ( a != null ) && ( a.equals(b) ) ) { ... }
将使系统崩溃,没有短路的架构(因此不允许上述语句)在处理如下语句时会更快:
(b) if ( ( a == 4 ) && ( b == 5 ) )
因为如果它不能并行执行 (a),它就不能并行执行 (b)。在这种情况下,允许短路的语言比不允许短路的语言慢。
我不知道这是不是真的。
谢谢