Quel est le CPU ou la RAM le plus important pour la compilation de gros logiciels, par exemple l'amorçage de gcc?

11

Je cherche à acheter un nouvel ordinateur bientôt, et je veux une machine pour les meilleures performances pour des temps de compilation rapides.

Alors, devrais-je me soucier d'obtenir un processeur quad-core avec le plus haut GHz possible, ou devrais-je plutôt investir dans une RAM plus rapide?

Quelle est votre recommandation pour quel type de RAM dois-je choisir?

Les performances graphiques n'ont pas d'importance, compilant de nombreux logiciels et exécutant des simulations mathématiques.

Dima
la source

Réponses:

8

Je ne dirais ni l'un ni l'autre. Obtenez plutôt un disque dur SSD rapide . Bien sûr, vous avez également besoin d'un processeur et d'une quantité de RAM appropriés, mais oui ...

Svish
la source
2
Eh bien, je n'ai pas obtenu de SSD, au lieu de cela j'ai obtenu 32 Go de RAM et compile tout en RAM sur tmpfs .... encore plus rapide que SSD =)
Dima
1
Eh bien, c'est un peu la même idée: p
Svish
2
Je ne suis pas d'accord. J'ai un disque SSD pour mon ordinateur portable et la vitesse de compilation a peu changé. D'un autre côté, obtenir un nouvel ordinateur avec près du triple de la vitesse du processeur et seulement 4 Go contre 6 Go sur la machine SSD a rendu la compilation presque 3 fois plus rapide. anandtech.com/show/2829/25 ne trouve aucune amélioration notable de la vitesse du compilateur avec un SSD tandis que blog.hypercomplex.co.uk/index.php/2010/06/… trouve une amélioration de 23%. Il me semble logique que si vous avez suffisamment de mémoire, la compilation implique très peu d’utilisation du disque.
Chris Dragon
1
Une autre pensée est qu'il est possible que certains compilateurs utilisent beaucoup de fichiers temporaires pour compiler plutôt que de la mémoire, auquel cas un SSD ou un disque virtuel serait le plus utile. Cependant, je ne m'attendrais pas à ce que les compilateurs modernes soient conçus de cette façon maintenant que la mémoire est bon marché et grande et que le système gère la pagination sur le disque lorsqu'elle est faible. En utilisant XCode 3.2.6 (basé sur gcc 3 ou 4), le SSD avait peu d'avantages.
Chris Dragon
Un SSD fait une différence considérable sur les grands projets / solutions qui utilisent fortement la copie / le déplacement de fichiers. Je n'ai pas utilisé de style RAM tmpfs, personnellement, mais j'en ai entendu de bonnes choses. Pour les petits projets, c'est probablement bien. Pour les énormes? Cela pourrait être insuffisant.
kayleeFrye_onDeck
4

La RAM vous en donnera probablement plus pour votre argent. La compilation, en particulier les applications volumineuses, est très gourmande en E / S, et avoir plus de RAM signifie que vous pouvez gagner plus de temps de pagination vers et depuis le disque. Aujourd'hui, la plupart des processeurs, surtout si vous optez pour un quad-core bon marché, fourniront beaucoup de puissance CPU pour votre compilation, mais avoir la RAM aidera les données à aller et venir.

À la réflexion, cela dépend en quelque sorte de vos simulations mathématiques et de vos processus de construction. Sont-ils parallélisables? Sinon, l'ajout de cœurs supplémentaires ne fera rien pour l'accélérer, bien que les nouvelles puces Intel (Core i7) soient assez rapides par cœur.

Jimmy
la source
1
qu'est-ce que la compilation a à voir avec le disque?
Arash
2

Je dirais obtenir des charges et des charges de RAM et utiliser des disques virtuels pour le stockage temporaire. Cela augmentera considérablement la vitesse de compilation. Un processeur multicœur rapide serait bien aussi, mais je pense que vous bénéficieriez davantage de beaucoup de RAM. Jetez un oeil à cet article pour quelques idées. Voici quelques informations supplémentaires et d'autres ici . Je pense que l'utilisation de la RAM sera plus rapide que l'utilisation d'un SSD, mais je peux me tromper.

AndrejaKo
la source
2

Pour vos calculs, votre processeur est de loin le plus important.

La compilation mettra l'accent sur votre processeur et votre RAM.

Je pense que votre solution la plus rentable serait d'obtenir le meilleur processeur possible, et de préférence un quad core. La RAM étant aussi bon marché qu'elle l'est (la DDR3 est maintenant aussi bon marché que la DDR2), vous pouvez facilement brancher autant de RAM que nécessaire pour une petite pièce (16 Go de DDR3 pour 180 $ sur newegg ... Je me rends compte que c'est exagéré, essayant simplement de montrer à quel point c'est bon marché). J'investirais donc autant que possible sur un processeur de qualité.

Flynismo
la source
Dépenser plus d'argent pour obtenir un processeur plus rapide est un bon conseil. Mais ne pas dépenser plus d'argent pour obtenir plus de cœurs. GCC fait toute sa compilation dans un seul thread, donc il n'utilise jamais plus d'un noyau.
Isaac Rabinovitch
1
@Isaac Oui, mais le système de génération peut généralement générer plusieurs tâches gcc simultanément, par exemple makeavec l' -joption. De plus, je pense que llvm peut ou pourra compiler un seul fichier en utilisant plusieurs threads.
Ponkadoodle
@Wallacoloo OK, vous pouvez parfois obtenir un peu de vitesse supplémentaire lorsque vous avez des fichiers parallèles dans le graphique des dépendances. Pourtant, je crois que les cœurs supplémentaires sont un facteur assez mineur quand il s'agit d'accélérer une construction. Difficile à dire, car les noyaux supplémentaires sont une fonction standard dans les nouveaux processeurs qui font les choses de vitesse juste en synchronisant plus rapidement. Si vous voulez démontrer que je me trompe, essayez de faire une grosse compilation avec et sans -j.
Isaac Rabinovitch
2
@IsaacRabinovitch En fait, sur de grandes bases de code, cela compte beaucoup . Sur notre base de code, le temps de compilation est réduit presque linéairement avec distcc( make -j8(localement) jusqu'à make -j30(distribué sur le réseau))
Alex
0

Les graphiques peuvent être utiles car une carte graphique avec un processeur peut réduire la charge sur le processeur principal. La puissance du processeur est probablement plus importante que la RAM, mais mieux les deux sont meilleurs.

jer.salamon
la source
Bon point - seulement si le processus peut utiliser des cœurs CUDA, ce que la plupart ne font pas.
NoBugs
0

en raison de limitations physiques, les cœurs eux-mêmes ne seront pas beaucoup plus rapides de sitôt, donc à moins que vous ne prévoyiez de passer à un silicium personnalisé, investir dans des processeurs plus rapides ne résoudra pas votre problème à moins que la parallélisation ne fasse vraiment une différence, mais de toute façon, de nombreux logiciels n'atteignent guère 4 cœurs , Je le sais car je compile très souvent tout mon système et souvent je vais voir les statistiques de ressources. De plus, même si les développeurs voulaient augmenter la parallélisation, il est parfois difficile de la faire dans le bon sens. Investir sur les processeurs est bon soit pour augmenter les performances des services, soit si vous effectuez d'abord des calculs basés sur des données; même si cela influencera le comportement d'exécution plus tard; si vos compilations suivent certains de ces modèles, il peut être plus difficile d'en discuter, mais ce sont des cas particuliers pour le processus de génération; c'est pourquoi par exemple, sur le calcul graphique, plus de cœurs font encore une différence. À part cela, faites ce que vous pouvez pour augmenter le plus d'E / S possible, cela peut impliquer des disques, des béliers et des cartes mères

jeferson lemos
la source