Я пытался выяснить, как добиться некоторого улучшения в моем коде в очень важной строке:
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 ++?
Я компилирую в Visual Studio 2005, на Windows XP, используя Pentium 4 с HT, если это предоставляет какую-либо дополнительную информацию для помощи.
Заранее спасибо!