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

Will enabling -msse, -msse2 and -mfpmath=sse always make my program run faster?

本文关键字:运行 程序 我的 -msse2 -msse mfpmath sse 启用      更新时间:2023-10-16

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

当担心性能时,您应该始终进行评测。

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

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

尽管可能,但在可悲的情况下,我真的不会期望有太大的放缓;然而,正如Ben所提到的,配置文件,配置文件

你的运气可能会有所不同。此外,如果在将运行代码的同一类型的CPU上进行编译,则使用-march=native通常会更好。

特别是SIMD指令,注意对齐和处理器相关性(即对缓存位置的影响)