【发布时间】:2010-09-10 11:44:53
【问题描述】:
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)。在这种情况下,允许短路的语言比不允许短路的语言慢。
不知道是真是假。
谢谢
【问题讨论】:
标签: architecture pipeline