私は 2 ビット配列を必要としています。メモリの節約にはまったく関心がありませんが、キャッシュ ミスを最小限に抑え、キャッシュ効率を最大化することに関心があります。bool の配列を使用すると、4 倍のメモリが使用されます。つまり、キャッシュ内の使用可能なデータのチャンクごとに、使用されない 3 つのチャンクが存在することになります。したがって、技術的には、ビットフィールドを使用すると、キャッシュの一貫性が 3 倍向上します。
計画は、バイトの配列として実装し、4 つの等しいビットフィールドに分割し、div 関数を使用して整数の商と剰余を、おそらく 1 つのクロックで取得し、それらを使用して右のインデックスと右のインデックスにアクセスすることです。ビットフィールド。
必要な配列の長さは約 10000 要素なので、非常に高密度のパック データが作成されます。2 つの実際のビットを使用すると、配列全体を L1 キャッシュに収めることができますが、バイト配列を使用すると、これは不可能になります。
私の質問は、パフォーマンス指向のタスクでこれが良いアイデアであるかどうかを誰かが教えてくれるかどうかです.2ビット配列を実装する価値があるかどうかはわかりますか? 確かに、知るための最良の方法はプロファイリングですが、事前の情報は有用であり、高く評価されます。