2010-07-21 24 views
6

我必須頻繁地編譯java代碼,特別是像GWT那樣需要很長時間才能完成的東西。我無法避免這種開銷,但我想通過更好的硬件來最小化它。哪一個因素會使這種彙編儘可能快? (我知道這有點主觀,但在編輯時,我確定有些因素比其他因素更重要)。例如,我認爲以3.6 GHz/Core運行的雙核可能比運行在2.8 Ghz/Core上的四核在編譯時更快(特別是當java代碼/ GWT代碼編譯目前是單線程)。哪個硬件因素對於快速代碼編譯很重要

那麼,對於這個具體問題購買硬件時我應該考慮什麼樣的因素呢?

編輯:

我覺得很一般沒有提到我的具體情況說起這些時彙編。 我正在處理GWT & Scala編譯,儘管我在編譯過程中沒有觀察到硬盤上的高負載,但該編譯速度較慢。

要使2.4Ghz的4核以上的CPU或3.4Ghz的2核CPU的CPU速度更快? 雙2GB DDR3內存是否會使速度更快?雙4GB DDR2會使內存更快? RAID 0會有很大的區別嗎?

+0

可能依賴於編譯器。一個智能編譯器可能能夠將你的源代碼分割成獨立的組並且並行編譯它們。 – 2010-07-23 14:29:31

回答

1

記憶肯定會成爲一個因素。如果編譯器無法在物理內存中保留必要的狀態,您將在頁面交換中大受打擊。

2

RAM和快速硬盤在這種情況下。在最新的C++編譯器中,CPU也是一個因素。

+0

嗯,在我的觀察中,我的AMD Athlon X2 1.7 2Ghz和4GB內存在編譯GWT時比Core 2 Dual 2.4Ghz和1GB內存要慢。我們正在使用相同類型的硬盤(Hatachi SATA 5400 rpm)和操作系統(Ubuntu 10.04) – 2010-07-24 16:28:24

+0

編譯器極有可能針對英特爾CPUS進行了優化。它也取決於你編譯的代碼,如果它充滿算法並且相對較小,那麼CPU可能成爲瓶頸。但在大多數情況下,恕我直言,瓶頸是硬盤和內存 – 2010-07-25 10:14:16

0

內存和硬盤的速度是最重要的事情。如果你經常編譯,更多的內存應該意味着更多的文件是從緩存而不是從文件中訪問的。寫入時間通常取決於HD,編譯Java通常意味着編寫大量單獨的文件。

您使用的文件系統可能會產生巨大影響,因此可以對磁盤進行碎片整理。

如果內存和HD不是瓶頸,那麼如果您的環境足夠聰明以使我們能夠使用它們(恕我直言,大多數環境在這裏表現不佳),如果內存和HD不是瓶頸,那麼CPU中的內核數量可能很重要。

此外,與茶壺和開水一樣,被監視的編譯器花費的時間也更長。

+0

因此,CPU赫茲和CPU高速緩存內存不如內存和硬盤驅動器重要?嗯... – 2010-07-24 16:30:23

+0

恕我直言,編譯的瓶頸通常是磁盤,而不是CPU。必須讀取和寫入大量文件(並計算依賴關係)通常比編譯成本要慢得多。 爲什麼你一遍又一遍重新編譯GWT,btw? – Uri 2010-07-25 00:37:48

+0

我不知道。我有GWT編譯的gwt-maven-plugin。每當我在Java代碼中進行更改(即使該類可能與GWT代碼無關),插件也會重新編譯。 – 2010-07-25 04:13:03