2010-08-21 61 views
2

是否有任何編譯器在使用中對編譯速度沒有多少關注,而是在編譯時間減慢的情況下尋求最大優化?有沒有優化器不關心編譯時間?

在我看來,編譯需要幾小時/天與分鐘/秒不會是一個重大問題,一旦你非常接近最終版本。 (如果你有足夠的測試中,它應該是安全的。)


編輯:我感興趣的是什麼,其中包括優化過程,可以採取數小時甚至數天來運行溫和端程序編譯器(正常優化需要10分鐘或更少的時間,例如Linux內核,apache或GCC)。

+0

對於什麼語言?我肯定使用過編譯器,使用優化器需要的時間比沒有更多。另外,請考慮諸如Coverity之類的靜態分析儀。 – 2010-08-21 02:16:21

+2

有沒有緩慢的優化器?當然,他們被稱爲人! – 2010-08-21 02:17:42

+0

其實人們更快的優化器。優化的氣泡排序仍然很慢。 – 2010-08-21 02:46:37

回答

2

在某種程度上,他們是「慢」,它只是電腦是如此之快,並擁有這種龐大的內存,像你使用你沒有注意到的......

::逃跑做一個小實驗使用g ++ ::

挑選稍微mathy代碼,我寫了工作,我獲得(約24K LOC在C++中75ish文件製作ROOT庫的重使用,但沒有模板)

  • -O0 :8.88秒
  • -O4:13.60秒
  • -Os:11.32秒

嗯...不加起來的編譯時間的很大一部分。也許它只是由文件訪問時間所支配。也許我應該試試mplayer或其他真正密集的東西。

4

其實,是的。不是因爲優化器速度很慢,而是因爲你要求優化器做的事情需要很長時間。例如,我使用LLVM優化整個程序:已編譯的源文件以及源文件使用的所有庫。所有東西都鏈接爲中間代碼並一起優化。這種優化比鏈接單獨優化的目標文件慢得多。但我不在乎,原因有兩個:1,優化在整個程序中完成,值得等待(;-)和2,計算機一直在變快。

+0

我不是在問他們爲什麼很慢,但他們爲什麼不慢呢?我有CPU,爲什麼不使用它? – BCS 2010-08-21 02:58:46

+0

我在說你可以。就我而言,極端優化(TM)可能意味着程序可以在沒有外部存儲的情況下在pic32上運行。大多數使用3Ghz處理器和「無限制」存儲的人並不在乎等待優化器節省時間/空間。 – 2010-08-21 03:01:44

+0

你看到什麼樣的減速? 10倍? – BCS 2010-08-23 02:48:40