boolean a = false, b = true;
if ( a && b ) { ... };
ほとんどの言語では、はfalseであるためb
評価されないため、trueにはなりません。私の質問は、アーキテクチャの観点から短絡が遅くなるのではないかということです。パイプラインでは、bを評価する必要があるかどうかを判断するために、aの結果を取得するのを待っている間、ストールしますか?代わりにネストされたifを実行する方が良いでしょうか?それも役に立ちますか?a
a && b
また、誰もが一般的にどのような短絡評価と呼ばれるか知っていますか?この質問は、プログラミングの友人が短絡評価について聞いたことがなく、それは一般的ではなく、多くの言語で見られず、パイプラインでは非効率的であると述べた後に発生しました。最後のものはよくわかりませんので、よろしくお願いします!
さて、私はおそらく私の友人がどこから来ているのかを説明する別の例だと思います。彼は、次のようなステートメントを並行して評価して以来、次のように信じています。
(a) if ( ( a != null ) && ( a.equals(b) ) ) { ... }
システムがクラッシュします。短絡がない(したがって、上記のようなステートメントを許可しない)アーキテクチャでは、次のようなステートメントの処理が高速になります。
(b) if ( ( a == 4 ) && ( b == 5 ) )
(a)並列に実行できなかった場合、(b)並列に実行できないためです。この場合、短絡を許可する言語は、短絡を許可しない言語よりも低速です。
それが本当かどうかはわかりません。
ありがとう