Question Quel est le plus important CPU ou RAM pour compiler de gros logiciels, par ex. bootstrap gcc?


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

Alors, devrais-je avoir un processeur quad-core avec un GHz le plus élevé possible, ou devrais-je plutôt investir dans une RAM plus rapide?

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

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


9
2017-07-27 15:18


origine




Réponses:


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


7
2017-07-27 16:33



Eh bien, je n'ai pas eu de SSD, au lieu de cela j'ai eu 32 Go de RAM et tout compiler en RAM sur tmpfs .... encore plus rapide que SSD =) - Dima
Eh bien, c'est un peu la même idée: p - Svish
Je ne suis pas d'accord. J'ai eu un disque SSD pour mon ordinateur portable et cela a fait peu de différence dans la vitesse de compilation. D'autre part, obtenir un nouvel ordinateur avec presque trois fois la vitesse du processeur et seulement 4 Go vs 6 Go sur la machine SSD a rendu la compilation presque 3 fois plus rapide. anandtech.com/show/2829/25ne trouve aucune amélioration notable de la vitesse du compilateur avec un SSD 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 nécessite très peu d’utilisation du disque. - Chris Dragon
Une autre idée est qu'il est possible que certains compilateurs utilisent beaucoup de fichiers temporaires pour la compilation plutôt que de la mémoire, auquel cas un disque SSD ou un disque virtuel aiderait le plus. Cependant, je ne m'attendrais pas à ce que les compilateurs modernes soient conçus de cette façon, maintenant que la mémoire est peu coûteuse et volumineuse et que le système gère la pagination sur le disque lorsqu'il est faible. En utilisant XCode 3.2.6 (basé sur gcc 3 ou 4), SSD n’avait que peu d’intérêt. - Chris Dragon
Un SSD fait une différence considérable sur les projets / solutions de grande taille qui utilisent fortement la copie / le déplacement de fichiers. Je n'ai pas utilisé le style RAM tmpfs, personnellement, mais j'ai entendu de bonnes choses à ce sujet. Pour les petits projets, ça va probablement. Pour les énormes? Cela pourrait être insuffisant. - kayleeFrye_onDeck


Probablement, RAM vous donnera un meilleur rendement. La compilation, en particulier les applications volumineuses, demande beaucoup d’E / S et le fait d’avoir plus de RAM signifie que vous pouvez gagner du temps en paginant vers et depuis le disque. La plupart des processeurs actuels, surtout si vous utilisez un quad-core bon marché, fourniront une grande quantité de ressources CPU pour votre compilation, mais le fait d’avoir de la RAM vous aidera à faire des allers-retours.

Sur la 2ème pensée, cela dépend en quelque sorte de vos simulations mathématiques et des processus de construction. Sont-ils parallélisables? Si ce n'est pas le cas, l'ajout de cœurs supplémentaires ne permettra pas vraiment de l'accélérer, même si les nouvelles puces Intel (Core i7) sont assez rapides par cœur.


4
2017-07-27 15:24





Un bon graphisme pourrait aider 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 celle de la mémoire vive, mais mieux cela vaut pour les deux.


1
2017-07-27 15:20



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


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 multi-core rapide serait bien aussi, mais je pense que vous bénéficierez davantage de beaucoup de RAM. Jeter un coup d'œil à ce article pour des idées. Iciest un peu plus d'informations et d'autres ici. Je pense que l'utilisation de la RAM sera plus rapide qu'avec SSD, mais je peux me tromper.


1
2017-07-27 16:32





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 que vous pouvez vous permettre, et de préférence un noyau Quad. La RAM étant aussi bon marché que ça (DDR3 est maintenant aussi bon marché que DDR2), vous pouvez facilement brancher autant de RAM que nécessaire pour une petite pièce (16 Go de DDR3 pour 180 $ sur newegg ... juste essayer de démontrer à quel point c'est bon marché). J'investirais donc autant que possible dans un CPU de qualité.


1
2018-06-16 15:45



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 core. - Isaac Rabinovitch
@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 make avec le -j option. En outre, je pense que llvm peut ou pourra compiler un seul fichier en utilisant plusieurs threads. - Ponkadoodle
@Wallacoloo OK, vous pouvez parfois obtenir un peu plus de rapidité lorsque vous avez des fichiers parallèles dans le graphique de dépendance. Néanmoins, je pense que les noyaux supplémentaires sont un facteur mineur pour accélérer la construction. Difficile à dire, car les cœurs supplémentaires sont une caractéristique standard des nouveaux processeurs. faire accélérer les choses simplement en faisant un tour plus rapide. Si vous voulez démontrer que je suis dans l'erreur, essayez de faire une grande compilation avec et sans -j. - Isaac Rabinovitch
@IsaacRabinovitch En fait, sur de grandes bases de code, c'est important 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