2012-12-21 61 views
0

在第一個,代碼是非常簡單的(小於500線)太慢了,complilation可以5秒編譯速度是項目(約2000線)

與日益增長內完成代碼,則編譯變得越來越慢(需要約20秒至C,這將需要更多的時間與代碼

現在

文件的成長我有【

插座,AsyncSocket, WebsocketHelper,AsyncWebsocketServer,MonitorMessage,H tmlHelper,JsonHelper(楊松庫的抽象)的StringHelper,提供SQLHelper,記錄儀,AddLocalServerWindow,LandPointWindow,ServerMonitorProxyDlg

真正的問題是,花費的時間很多編譯每當我只想做一點點改變項目

eg

我只想改變一個值來測試的東西,它需要大約20秒編譯

然後我想補充JsonHelper :: buildArray()函數,我至少需要2 * 20秒編譯:

當我完成實現該功能,我會編譯,看看它是否可以正確編譯,這是第20秒。然後將此方法整合到系統中並編譯,這將需要20秒。 事實是,每次我寫約5行代碼,我會編譯它,看看是否有語法錯誤(這是在這種情況下的壞習慣?)

另一個問題是,我總是犯的語法錯誤在代碼中(每10-20行),所以我需要重新編譯一遍又一遍的代碼。很少編譯時間花費在我剛纔編寫的代碼上(這部分是我真正關心的),很多編譯時間花費在穩定的代碼上(沒有錯誤,我之前寫過)。

如何讓這種情況更好?任何建議表示讚賞

+6

那麼這是C#還是C++? –

+0

它是C++,但我認爲c#也需要編譯,所以我添加了c#標記。 –

+2

你使用什麼編譯器,編譯環境,系統規格,操作系統等?沒有進一步的細節真的很難幫助你。如果你有一臺低端個人電腦需要時間,20秒並不是那麼重要,我的項目比現代PC上的編譯時間要長。 – MrKiane

回答

4

C#編譯時間很少是一個問題。與C++編譯器相比,Microsoft C#編譯器速度非常快。我在一個大型的C++項目上工作,下面是我們如何減輕構建時間:

  • 減少依賴關係。如果您只使用頭文件中的指針或引用類型,則前向聲明類型而不是包含。
  • 獲得更快的機器。我們使用16 GB的RAM開發8核i7。這足夠大,以至於整個源樹適合緩存。 ~135000行代碼在76秒內編譯完成,這通常更像是10秒,因爲只有少數文件發生了變化。
  • 根據應用程序,使用更快的編譯器。我們有開發跨平臺應用程序的好處,所以我在Linux上開發並使用g ++,比Microsoft Visual C++快幾倍。鐺更快了。
  • 花更多時間規劃你的界面。儘量不要經常修改標題。在適度使用時有一件事可以幫助解決這個問題,那就是PIMPL idiom
+3

請注意,儘管有標籤,但問題實際上似乎是關於C++ – jalf

+0

謝謝,它使用foward聲明而不是包含 –