c++ gcc g++

c++ - g++ ubuntu



¿Habilitar-msse,-msse2 y-mfpmath=sse siempre hará que mi programa se ejecute más rápido? (2)

Tengo un programa en C ++ que está haciendo muchas operaciones matemáticas (en su mayoría llamadas a sin (), sqrt () y operaciones regulares). Sé que en teoría, habilitar -msse, -msse2 y -mfpmath = sse debería exponer más registros para su uso en GCC / G ++, potencialmente haciendo que mi programa se ejecute más rápido, en la práctica, ¿siempre lo hará? En el peor de los casos, ¿podría hacer que mi código se ejecute más lento?


Cuando te preocupa el rendimiento, siempre debes hacer un perfil.

Las instrucciones SSE utilizan diferentes recursos de la CPU, por lo que podrían causar una disminución en el rendimiento (por ejemplo, porque esos recursos no están disponibles para Hyperthreading), pero en la vida real, esto debería ser muy raro.


No: no siempre hará el programa más rápido.

Aunque podría , realmente no esperaría mucha desaceleración en los casos patéticos; sin embargo, como lo menciona Ben, perfil, perfil perfil .

Tu suerte puede variar. Además, usar -march=native suele ser mejor si está compilando en el mismo tipo de CPU que ejecutará el código.

En particular con las instrucciones SIMD, la alineación del reloj y la afinidad del procesador (es decir, los efectos en la localidad de caché)