確實在編譯器中的-march標誌(例如:gcc)真的很重要嗎?編譯器-march標誌基準?
會是更快,如果我編譯使用-march = my_architecture而不是-march我所有的程序和內核= i686的
確實在編譯器中的-march標誌(例如:gcc)真的很重要嗎?編譯器-march標誌基準?
會是更快,如果我編譯使用-march = my_architecture而不是-march我所有的程序和內核= i686的
是這樣做,雖然差別只是偶爾相關。但是,如果您的代碼可以被矢量化以使用SSE或其他擴展指令集,而這些指令集在一個架構上可用,而另一個架構上不可用,則它們可能相當大。當然,32位和64位之間的差異可以(但不一定)顯而易見(如果您認爲它是-march
參數的類型,則爲-m64
)。
由於anegdotic證據,幾年前我遇到了一個有趣的錯誤在gcc
哪裏這是在Pentium 4上運行特定的代碼塊將大約2倍時-march=pentium4
時-march=pentium2
編譯比編譯慢 。
所以:通常沒有什麼區別,有時候是有的,有時候是相反的。與往常一樣:在決定使用超出「安全」範圍的任何優化之前(例如,使用您的實際確切CPU模型而不是更通用的模型)進行測量。
無法保證您使用march
進行編譯的任何代碼的速度會更快/更慢w.r.t.另一個版本。這實際上取決於代碼的「種類」,實際結果可能只能通過測量獲得。例如,如果你的代碼有很大的矢量化潛力,那麼結果可能會與「行軍」不一樣。另一方面,有時編譯器在向量化過程中做得不好,並且在編譯特定體系結構時可能導致代碼變慢。
嗯,它很重要。否則,該選項將不存在。它影響指令集和編譯器將生成的調度。 – Mysticial 2013-03-19 18:25:06