Я пытался понять, как улучшить свой код в очень важной паре строк:
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, если это предоставляет какую-либо дополнительную информацию для помощи.
Заранее спасибо!