2010-07-21 6 views
6

Devo compilare frequentemente codice Java, in particolare roba come GWT che impiegano anni per essere completata. Non posso evitare l'overhead, ma voglio minimizzarlo con un hardware migliore. Quale fattore renderà questo tipo di compilazione il più veloce possibile? (So ​​che è un po 'soggettivo, ma quando vengono alla compilazione, sono sicuro che alcuni fattori sono più importanti degli altri).Quale fattore hardware è importante per la compilazione di codice veloce

Ad esempio, penso che un Dual Core che gira a 3.6 GHz/Core può essere più veloce di un Quad Core che funziona a 2.8 Ghz/Core quando si tratta di compilazione (specialmente quando il codice java/la compilazione del codice GWT è attualmente singolo filettata).

Quindi, che tipo di fattore dovrei considerare quando l'hardware di acquisto riguarda questo specifico problema?

Edit:

Trovo abbastanza generale quando si parla di queste compilation, senza fare riferimento alla mia situazione specifica. Ho a che fare con la compilation GWT & Scala, che è dannatamente più lenta, anche se non osservo un carico elevato sul mio disco fisso durante la compilazione.

Devo renderlo più veloce con CPU di 4+ core di 2.4Ghz o CPU di 2 core di 3.4Ghz? La doppia memoria DDR3 da 2 GB è più veloce o una DDR2 da 4 GB più veloce? Il RAID 0 farà una grande differenza?

+0

Potrebbe dipendere dal compilatore. Un compilatore intelligente potrebbe essere in grado di suddividere la sorgente in gruppi indipendenti e compilarli in parallelo. –

risposta

1

La memoria sarà sicuramente un fattore. Se il compilatore non è in grado di mantenere lo stato necessario nella memoria fisica, avrai un enorme successo negli swap della pagina.

2

RAM e un disco rigido veloce in questo caso. Nel caso degli ultimi compilatori C++, anche la CPU è un fattore.

+0

Hmm, nella mia osservazione, il mio AMD Athlon X2 1.7 2Ghz con 4GB di RAM è molto più lento di Core 2 Dual 2.4Ghz con 1GB di RAM durante la compilazione di GWT. E stiamo usando lo stesso tipo di HDD (Hatachi SATA 5400 rpm) e OS (Ubuntu 10.04) –

+0

È altamente possibile che il compilatore sia ottimizzato per Intel CPUS. Dipende anche dal codice che compilate, se è pieno di algoritmi ed è relativamente piccolo, quindi la CPU può diventare il collo di bottiglia. Ma nella maggior parte dei casi, IMHO, il collo di bottiglia è l'HDD e la RAM –

0

La memoria e la velocità del disco rigido sono le cose più importanti. Se si compilano frequentemente, più memoria dovrebbe significare che più file sono accessibili dalla cache piuttosto che dal file. Il tempo di scrittura è generalmente dipendente dall'HD e compilare Java di solito significa scrivere molti file separati.

Il file system che si utilizza può avere un impatto enorme qui, quindi può deframmentare il disco.

Se memoria e HD non sono colli di bottiglia, il numero di core nella CPU potrebbe essere importante, se il proprio ambiente è abbastanza intelligente da farcene (IMHO la maggior parte degli ambienti fa un lavoro scarso qui).

Inoltre, come con le teiere e l'acqua bollente, un compilatore che viene osservato richiede più tempo per la compilazione.

+0

Quindi la CPU Hz e la CPU Cache Memory non sono importanti quanto la RAM e il disco rigido? Hmm ... –

+0

IMHO il collo di bottiglia nella compilazione di solito è il disco, non la CPU. Dover leggere e scrivere un numero elevato di file (e anche calcolare le dipendenze) è in genere molto più lento del costo della compilazione. Perché stai ricompilando il GWT più e più volte, btw? – Uri

+0

Non lo so. Ho compilato GWT da gwt-maven-plugin. Ogni volta che apporto una modifica al codice java (anche la classe potrebbe non essere correlata al codice GWT), il plugin ricompilerà. –

Problemi correlati