SSE(Visual Studio上)を使用してメソッドを高速化しようとしています。私はその地域の初心者です。私のメソッドで使用する主なデータ型はサイズ32のビットセットであり、主に使用する論理演算はAND演算です(_BitScanForwardはほとんど使用されていません)。SSE命令を使用して手順をスピードアップできるかどうか疑問に思いました。
これが私が今している方法です(私は完全に完了しており、結果を直接比較することはできません):
_mm_set_psを使用してオペランド(ビットセット)をロードします。ビットセットでto_ulong()を使用して、ビットセットを符号なし長整数に変換します。
__m128 v1 = _mm_set_ps(b1.to_ulong(),b2.to_ulong(),b3.to_ulong(),b4.to_ulong());
__m128 v2 = _mm_set1_ps(b.to_ulong())
これに実際のAND演算が続きます。
__m128 v3 = _mm_and_ps(v1,v2);
この時点で、2つの質問があります。
私がそれをしている方法(to_ulong()を使用してビットセットを符号なし長整数に変換する)はそれを行う良い方法ですか?SSEを使用することで得られる可能性のあるパフォーマンスの向上を損なう可能性のある大きなオーバーヘッドがあるのではないかと思います。
v3を4ビットセットの形でメモリに保存する最良の方法は何ですか?_mm_storeu_ps組み込み関数を使用することを計画しています。