すべての値がブール値の場合、バイナリ&
は論理よりも多くのビットで動作しません&&
か?
例えば
if ( foo == "Yes" & 2 != 0 & 6 )
また
if ( foo == "Yes" && 2 != 0 && 6 )
(PHPを具体的に考えますが、どの言語でもかまいません)
すべての値がブール値の場合、バイナリ&
は論理よりも多くのビットで動作しません&&
か?
例えば
if ( foo == "Yes" & 2 != 0 & 6 )
また
if ( foo == "Yes" && 2 != 0 && 6 )
(PHPを具体的に考えますが、どの言語でもかまいません)
何ビットで動作するかは関係ありません。プロセッサはとにかく(通常は)単一の命令でそれを実行できます。決定的な違いは、のショートカット機能です。したがって、CやJavaのように、このように機能&&
する言語を想定すると、右側の評価が簡単ではないものの方が高速です。&&
(そして明らかにPHPですが、確かにそれについてはほとんど知りません。)
一方、このショートカットに必要なブランチも速度を低下させる可能性がありますが、最近のコンパイラはそれを最適化するのに十分賢いです。
コードのロジックによって異なります。
&&が論理的である場合は&&を使用し、&が論理的である場合は&を使用することをお勧めします。そのため、これらの演算子はに適しています。次の理由により、時期尚早に最適化しないでください。
アプリケーションの速度は、最適化なしで問題ない可能性があります
アプリケーションの一部を最適化すると、関係のない量の速度向上が得られます。
コードはより複雑になり、それ以降のバージョンでの作業は困難になります
速度に問題がある場合、それはおそらくアイデアとは関係ありません
プログラミング自体が非常に難しい場合があり、この種のハッキングによってコードが読み取れなくなり、チームメートがコードを理解できなくなり、コードが醜いためにチームの全体的な効率が低下します。