启用-msse,-msse2和-mfpmath = sse会不会让我的程序运行得更快?

Wir*_*uce 16 c++ gcc g++

我有一个C++程序正在进行大量的数学运算(主要调用sin(),sqrt()和常规操作).我知道在理论上启用-msse,-msse2和-mfpmath = sse应该为GCC/G ++公开更多的寄存器以便使用它可能使我的程序运行得更快,实际上它总会这样做吗?在最坏的情况下,它可以让我的代码运行得更慢吗?

Ben*_*igt 16

当担心性能时,您应该始终进行分析.

SSE指令使用不同的CPU资源,因此它们可能导致性能下降(例如,因为这些资源不可用于超线程),但在现实生活中这应该是非常罕见的.


seh*_*ehe 12

不,它不会总是让程序更快.

虽然可以,但我真的不希望在可悲的情况下放慢脚步; 然而,如Ben所述,个人资料,个人资料.

你的运气会有所不同.此外,-march=native如果您正在编译将运行代码的相同类型的CPU,通常使用更好.

特别是SIMD指令,观察对齐和处理器关联(即对缓存局部性的影响)