2011-06-08 62 views
16

我有一個C++程序,做了很多數學(主要是調用sin(),sqrt()等常規操作)。我知道在理論上,使-msse,-msse2和-mfpmath = sse能夠爲GCC/G ++使用更多的寄存器以便使我的程序運行更快,實際上它總是這樣做?在最糟糕的情況下,它能讓我的代碼運行得更慢嗎?啓用-msse,-msse2和-mfpmath = sse總是會讓我的程序運行得更快嗎?

+1

只是一個側面說明,如果你真的需要快速數學,你應該考慮使用優化的函數,完全符合您的精度要求,甚至是預先計算的值表。這可以帶來幾個數量級的加速。 – 2011-06-08 23:04:10

回答

16

如果擔心性能,你應該總是輪廓。

SSE指令使用不同的CPU資源,因此他們可能會導致性能下降(例如,由於這些資源是不可用於超線程),但在現實生活中,這應該是非常罕見的確實。

12

都能跟得上:它不會總是使程序速度更快。

雖然它可能,我真的不會期望在可憐的情況下放緩很多;然而,正如Ben所提到的,簡介,簡介簡介

你的運氣可能會有所不同。此外,如果您正在編譯運行代碼的相同類型的CPU,則使用-march=native通常會更好。

特別是與SIMD指令,看調整和處理器親和力(即高速緩存局部性的影響)

+0

是「不」。 「總是讓我的程序跑的更快?」或者「它能讓我的代碼運行得更慢嗎?」 OP要求... – 2011-06-08 22:52:35

+0

澄清[...] – sehe 2011-06-08 22:55:56

相關問題