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

时间:2011-06-08 22:46:49

标签: c++ gcc g++

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

2 个答案:

答案 0 :(得分:16)

当担心表现时,您应该始终进行个人资料。

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

答案 1 :(得分:12)

不:它不会总是让程序更快。

虽然可以,但我真的不希望在可怜的案件中有太多的减速;但是,如Ben所述,个人资料,个人资料个人资料

你的运气可能会有所不同。另外,如果要编译运行代码的相同类型的CPU,使用-march=native通常会更好。

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