昔から、ゼロとの比較は他のどの値よりも高速であるという記憶が残っています (エヘム Z80)。
私が書いているいくつかの C コードでは、すべてのビットが設定されている値をスキップしたいと考えています。現在、これらの値のタイプは ですがchar
、変更される可能性があります。テストを実行するには、次の 2 つの方法があります。
if (!~b)
/* skip */
と
if (b == 0xff)
/* skip */
後者は b が 8 ビット char であると仮定しているのに対し、前者はそうではありませんが、古いゼロ比較最適化トリックにより前者の方が高速でしょうか?