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) параллельно. В этом случае язык, который допускает короткое замыкание, медленнее, чем язык, который этого не делает.
Я не знаю, правда это или нет.
Спасибо