前述のように、ビット演算は非常に効率的です。最新のプロセッサでは、事実上、このような操作はほぼ確実に1クロックサイクルで実行されます。
式用に生成された実際のコードを確認する場合は、VisualStudioデバッガーで起動します。ブレークポイントを設定し、ヒットしたら、メニューをクリックします:Debug..Windows..Disassembly。
たぶん、あなたの式が十分に複雑であれば、この種のことでコンパイラーとオプティマイザーを打ち負かすことができますが、私はそれを疑っています。さらに重要なことに、発生するパフォーマンスの問題は、ビットをいじることに関連している可能性はほとんどありません。問題が発生するまで最適化しないでください。ジェームズマイケルヘアが言うように:
最適化の2つの法則を覚えておいてください。これらを最初にどこで聞いたかはわかりませんが、本当です。
- 初心者の場合:最適化しないでください。
- 専門家の場合:まだ最適化しないでください。
信用できる。初心者の場合は、どんな犠牲を払っても最適化する衝動に抵抗してください。そして、あなたが専門家であるならば、その決定を遅らせてください。タスクに適切なデータ構造とアルゴリズムを選択している限り、パフォーマンスはおそらく十分すぎるでしょう。コードではなく、ネットワーク、データベース、またはディスクのヒットが速度低下になる可能性があります。彼らが言うように、あなたのコードのボトルネックの98%はあなたのコードの2%にあるので、時期尚早の最適化は測定可能な影響を与えない保守と安全の負債を追加するかもしれません。
代わりに、保守性と安全性をコード化してから、真のボトルネックを見つけたときにのみ、戻ってさらに最適化する必要があります。
詳細はこちら:
ビット操作に関連するほぼすべてのことを実行する方法については、ビットをいじるハックを参照してください。C言語を対象としていますが、同じ手法をC#でほとんど変更せずに機能します(たとえば、ポインターを含むものはすべて再考する必要があります)。