2010-03-11 239 views
9

我們正在努力減少Windows上的編譯時間,因此考慮所有選項。我試圖在谷歌上比較使用GCC(MinGW或Cygwin)和MSVC編譯器(CL)的編譯時間,但沒有任何運氣。當然,做比較並不難,但我寧願避免重新發明輪子。Windows GCC和MSVC編譯器之間的編譯時間比較

有沒有人知道這樣的比較呢?或者,也許任何人都有一些實踐經驗?

輸入十分讚賞:)

回答

4

比較編譯器是不平凡的:

  • 它可以從處理器變化到處理器。 GCC可能會更好地針對酷睿2雙核的i7和MSVC進行優化,反之亦然。性能可能會受到緩存等的影響(展開循環或不展開循環,這就是問題;))。
  • 它很大程度上取決於如何編寫代碼。一個編譯器可能會偏好某些成語(相當於彼此)。
  • 這取決於如何使用代碼。
  • 這取決於標誌。例如,已知gcc -O3經常產生較慢的代碼,然後-O2-Os
  • 這取決於可以對代碼做出什麼假設。你可以允許嚴格的別名或否(gcc中的-fno-strict-aliasing/-fstrict-aliasing)。你需要完整的IEEE 754還是可以彎曲浮點指針計算規則(-ffast-math)。
  • 它也取決於特定的處理器擴展。你是否啓用MMX/SSE?你使用內部函數還是不使用內部函數?你是否依賴該代碼是否兼容i386?
  • 哪個版本的gcc?哪個版本的msvc?
  • 你使用任何gcc/msvc擴展名嗎?
  • 您是否使用微基準或macrobenchmarking?

,並在最後你發現,結果是小於統計誤差;)

即使單個應用程序使用的結果可能是不確定的(功能更好的在GCC的MSVC執行,但乙)。

PS。我會說cygwin將是最慢的,因爲它在POSIX和WinAPI之間具有額外的間接級別。

+0

問題是關於編譯時間,而不是關於結果可執行文件的性能。 – 2011-05-26 10:28:27

+0

幾乎所有的上述內容都適用,除了可能是測試編譯器速度的最後一個。 – 2011-05-26 19:55:52

+0

downvote的任何原因? – 2014-07-23 11:04:59