jueves, 23 de junio de 2011

Optimización numérica con CPP

Ejecutando una operación sencilla como a*a*a*a*a*a. Si compilamos lo que realmente ejecutamos son 5 lineas mulsd:
movapd %xmm14, %xmm13
mulsd %xmm14, %xmm13
mulsd %xmm14, %xmm13
mulsd %xmm14, %xmm13
mulsd %xmm14, %xmm13
mulsd %xmm14, %xmm13
mientras que si ejecutamos (a*a*a)*(a*a*a)
movapd %xmm14, %xmm13
mulsd %xmm14, %xmm13
mulsd %xmm14, %xmm13
mulsd %xmm13, %xmm13
Acabamos de reducirlo en 3 lineas!!