8
votes

Quel facteur matériel est important pour la compilation rapide du code

Je dois compiler fréquemment le code Java, en particulier des trucs comme GWT qui prennent des âges à compléter. Je ne peux pas éviter ce surcharge, mais je veux le minimiser avec un meilleur matériel. Quel facteur rendra ce type de compilation aussi vite que possible? (Je sais que c'est un peu subjectif, mais quand il s'agit de la compilation, je suis sûr que certains facteurs sont plus importants que les autres).

Par exemple, je pense qu'un double noyau qui fonctionne à 3,6 GHz / noyau peut être plus rapide qu'un noyau quad à 2,8 ghz / noyau lorsqu'il s'agit de compilation (en particulier lorsque la compilation de code Java / GWT est actuellement uniforme. ).

Ainsi, quel type de facteurs devrais-je envisager lors de l'achat de matériel en ce qui concerne ce problème spécifique?

EDIT:

Je trouve tout de suite en parlant de cette compilation sans faire référence à ma situation spécifique. Je traite avec la compilation GWT & SCALA, qui est sacrément plus lent, même si je n'observe pas une charge élevée sur mon disque dur pendant la compilation.

Devrais-je le rendre plus rapide avec la CPU de 4 cœurs de 2,4 GHz ou CPU de 2 cœurs de 3,4 GHz? Dual 2 Go de Ram DDR3 le rendra plus rapide ou un DDR2 double 4 Go le rend plus rapide? Est-ce que raid 0 fait une grande différence?


1 commentaires

Pourrait dépendre du compilateur. Un compilateur intelligent pourrait être capable de partitionner votre source en groupes indépendants et de les compiler en parallèle.


3 Réponses :


1
votes

La mémoire va certainement être un facteur. Si le compilateur ne peut pas conserver l'état nécessaire dans la mémoire physique, vous allez prendre un énorme succès dans les swaps de la page.


0 commentaires

2
votes

RAM et un disque dur rapide dans ce cas. Dans le cas du dernier CPU C ++ compilateurs, est également un facteur.


2 commentaires

Hmm, dans mon observation, mon AMD Athlon X2 1,7 2Ghz avec 4 Go de RAM est de bien plus lent que le noyau 2 Dual 2.4GHz avec 1 Go de RAM lors de la compilation de GWT. Et nous utilisons le même genre de disque dur (HATACHI SATA 5400 tr / min) et OS (Ubuntu 10.04)


Il est fortement possible que le compilateur soit optimisé pour Intel CPUS. Cela dépend également du code que vous compilez, s'il est rempli d'algorithmes et est relativement petit, puis la CPU peut devenir le goulot d'étranglement. Mais dans la plupart des cas, IMHO, le goulot d'étranglement est le disque dur et la RAM



1
votes

La mémoire de la mémoire et du disque dur sont les choses les plus importantes. Si vous compilez fréquemment, plus de mémoire doit signifier que plus de fichiers sont accessibles à partir du cache plutôt que dans le fichier. Le temps d'écriture est généralement HD dépendant et la compilation de Java signifie généralement écrire beaucoup de fichiers distincts.

Le système de fichiers que vous utilisez peut avoir un impact énorme ici, afin de défragmenter votre disque.

Si la mémoire et la HD ne sont pas des goulots d'étranglement, le nombre de cœurs de votre CPU pourrait importer, si votre environnement est suffisamment intelligent pour en faire d'eux (IMHO La plupart des environnements font un mauvais travail ici).

Aussi, comme avec des théières et de l'eau bouillante, un compilateur qui est regardé prend plus de temps pour compiler.


3 commentaires

Donc, la mémoire CPU Hz et la mémoire cache de la CPU n'est pas aussi importante que RAM & Hard Drive? Hmm...


IMHO Le goulot d'étranglement en compilation est généralement du disque, pas de la CPU. Devoir lire et écrire un grand nombre de fichiers (et également calculer les dépendances) est généralement considérablement plus lent que le coût de la compilation. Pourquoi vous recompissez-vous le GWT encore et encore, BTW?


Je ne sais pas. J'ai compilé GWT-Maven-Plugin. Chaque fois que je fais une modification du code Java (même la classe peut ne pas être liée au code GWT), le plug-in recompilera.