我一直试图弄清楚如何在非常关键的几行代码中获得一些改进:
float x = a*b;
float y = c*d;
float z = e*f;
float w = g*h;
所有 a, b, c ... 都是浮点数。
我决定考虑使用 SSE,但似乎找不到任何改进,事实上它的速度是原来的两倍。我的 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 那样将寄存器与四个浮点打包在一起。
任何评论或帮助将不胜感激,我主要需要了解为什么我使用 SSE 的计算比串行 C++ 代码慢?
我在 Windows XP 上的 Visual Studio 2005 中编译,使用带有 HT 的 Pentium 4,如果这提供了任何额外的信息。
提前致谢!