非常に重要な数行でコードを改善する方法を見つけようとしています。
float x = a*b;
float y = c*d;
float z = e*f;
float w = g*h;
a、b、c ... はすべて float です。
SSE の使用を検討することにしましたが、改善が見られないようです。実際には、2 倍遅くなることが判明しました。私のSSEコードは次のとおりです。
Vector4 abcd, efgh, result;
abcd = [float a, float b, float c, float d];
efgh = [float e, float f, float g, float h];
_asm {
movups xmm1, abcd
movups xmm2, efgh
mulps xmm1, xmm2
movups result, xmm1
}
標準のインライン アセンブリも使用してみましたが、SSE のように 4 つの浮動小数点をレジスタにパックできるようには見えません。
コメントやヘルプをいただければ幸いです。主に、SSE を使用した計算がシリアル C++ コードよりも遅い理由を理解する必要がありますか?
Windows XP 上の Visual Studio 2005 で、Pentium 4 と HT を使用してコンパイルしています。
前もって感謝します!