Cosa è più importante CPU o RAM per la compilazione di software di grandi dimensioni, ad esempio bootstrap di gcc?


11

Sto cercando di acquistare presto un nuovo computer e voglio una macchina con le migliori prestazioni per tempi di compilazione rapidi.

Quindi dovrei preoccuparmi di ottenere una CPU quad-core con il massimo GHz che posso permettermi o dovrei invece investire in RAM a velocità più elevata?

Qual è la tua raccomandazione per quale tipo di RAM dovrei scegliere?

Le prestazioni grafiche non contano, compilando un sacco di software ed eseguendo simulazioni matematiche.

Risposte:


8

Non direi nessuno dei due. Piuttosto ottenere un disco rigido SSD veloce . Ovviamente hai bisogno di una CPU adeguata e anche di una quantità di RAM, ma sì ...


2
Bene, non ho avuto un SSD, invece ho 32 GB di RAM e ho compilato tutto in RAM su tmpfs .... anche più veloce di SSD =)
Dima

1
Bene, questa è la stessa idea: p
Svish, l'

2
Non sono d'accordo. Ho ottenuto un'unità SSD per il mio laptop e ha fatto poca differenza nella velocità di compilazione. D'altra parte, ottenere un nuovo computer con quasi il triplo della velocità della CPU e solo 4 GB contro 6 GB sulla macchina SSD ha reso la compilazione quasi 3 volte più veloce. anandtech.com/show/2829/25 non rileva alcun miglioramento evidente della velocità del compilatore con un SSD mentre blog.hypercomplex.co.uk/index.php/2010/06/… rileva un miglioramento del 23%. Mi sembra logico che se hai abbastanza memoria, la compilazione implica un utilizzo del disco molto ridotto.
Chris Dragon,

1
Un altro pensiero è che alcuni compilatori usano molti file temporanei per compilare piuttosto che la memoria, nel qual caso un SSD o un ramdisk sarebbe di grande aiuto. Tuttavia, non mi aspetterei che i compilatori moderni fossero progettati in questo modo ora che la memoria è economica e grande e il sistema gestisce il paging su disco quando si esaurisce. Usando XCode 3.2.6 (basato su gcc 3 o 4), SSD ha avuto pochi benefici.
Chris Dragon,

Un SSD fa una differenza considerevole su grandi progetti / soluzioni che utilizzano pesantemente la copia / lo spostamento dei file. Personalmente non ho usato lo stile RAM tmpfs, ma ne ho sentito parlare bene. Per i progetti più piccoli, probabilmente va bene. Per quelli enormi? Potrebbe essere insufficiente.
kayleeFrye_onDeck,

4

Probabilmente la RAM ti darà un botto più grande per il dollaro. La compilazione, in particolare le applicazioni di grandi dimensioni, richiede molta I / O e avere più RAM significa che puoi risparmiare più tempo sul paging da e verso il disco. La maggior parte delle CPU oggi, specialmente se si utilizza un quad-core economico, fornirà molta potenza della CPU per la compilazione, ma avere la RAM aiuterà con i dati che vanno avanti e indietro.

A pensarci bene, dipende in qualche modo dalle simulazioni matematiche e dai processi di costruzione. Sono parallelizzabili? In caso contrario, l'aggiunta di più core non farà davvero nulla per accelerarlo, anche se i nuovi chip Intel (Core i7) sono abbastanza veloci su base per core.


1
cosa c'entra la compilazione con il disco?
Arash,

2

Direi ottenere un sacco di RAM e usare i ramdisk per l'archiviazione temporanea. Ciò aumenterà notevolmente la velocità di compilazione. Anche una veloce CPU multi-core andrebbe bene, ma penso che trarrai maggiori benefici da un sacco di RAM. Dai un'occhiata a questo articolo per alcune idee. Ecco alcune ulteriori informazioni e alcune altre qui . Penso che l'uso della RAM sarà più veloce dell'uso dell'SSD, ma potrei sbagliarmi.


2

Per i tuoi calcoli, il tuo processore è di gran lunga il più importante.

La compilazione stresserà sia il tuo processore che la RAM.

Penso che la tua soluzione più conveniente sarebbe quella di ottenere la migliore CPU che ti puoi permettere, e preferibilmente un Quad core. Dato che la RAM è economica come è (DDR3 ora è economica come DDR2), puoi facilmente collegare tutta la RAM di cui hai bisogno per una piccola moneta (16 GB di DDR3 per $ 180 su newegg ... Mi rendo conto che è eccessivo, sto solo cercando di dimostrare quanto sia economico). Quindi investirei quanto più possibile su una CPU di qualità possibile.


Spendere più soldi per ottenere una CPU più veloce è un buon consiglio. Ma non spendere più soldi per ottenere più core. GCC esegue tutta la sua compilazione in un singolo thread, quindi non utilizza mai più di un core.
Isaac Rabinovitch il

1
@Isaac Sì, ma il sistema di generazione in genere può generare più lavori gcc contemporaneamente, ad esempio makecon l' -jopzione. Inoltre, credo che llvm possa o sarà in grado di compilare un singolo file usando più thread.
Ponkadoodle,

@Wallacoloo OK, a volte puoi ottenere una velocità extra quando hai file paralleli nel grafico delle dipendenze. Tuttavia, credo che i core extra siano un fattore piuttosto secondario quando si tratta di accelerare una build. Difficile da dire, dal momento che nuclei extra sono una caratteristica standard in CPU più recenti, che fanno accelerare le cose semplicemente facendo segnare più veloce. Se vuoi dimostrare che mi sbaglio, prova a fare una grande compilazione con e senza -j.
Isaac Rabinovitch

2
@IsaacRabinovitch In realtà su basi di codice di grandi dimensioni importa molto . Sul nostro codebase il tempo di compilazione è ridotto quasi in modo lineare con distcc( make -j8(localmente) fino a make -j30(distribuito sulla rete))
Alex

0

Bene, la grafica potrebbe essere utile perché una scheda grafica con una CPU può ridurre il carico sulla CPU principale. La potenza della CPU è probabilmente più importante della RAM, ma meglio entrambe sono meglio si sarebbe.


Un buon punto - solo se il processo potesse usare i core CUDA, cosa che la maggior parte non fa.
NoBugs,

0

a causa di limitazioni fisiche, i core stessi non diventeranno molto più veloci in qualsiasi momento presto, quindi a meno che tu non preveda di investire in silicio personalizzato investendo in cpu più veloci non risolverà il tuo problema a meno che la parallelizzazione non faccia davvero la differenza, ma in entrambi i casi difficilmente molti software superano i 4 core , Lo so perché molto spesso compilo il mio intero sistema e molte volte vado a vedere le statistiche delle risorse. Inoltre, anche se gli sviluppatori volessero aumentare la parallelizzazione, a volte è sconcertante farcela in modo positivo. Investire su CPU è utile sia per aumentare le prestazioni dei servizi, sia se si eseguono calcoli in base ai dati; anche se in seguito influenzerà il comportamento dell'esecuzione; se le tue compilation seguono alcuni di questi schemi, potrebbe essere una cosa più difficile da discutere, ma questi sono alcuni casi speciali per il processo di compilazione; questo è il motivo per cui, ad esempio, sul calcolo grafico più core fanno ancora qualche differenza. A parte ciò, fare ciò che è possibile per aumentare l'I / O il più possibile, può coinvolgere dischi, RAM e schede madri

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.