Quels composants PC ont le plus grand impact sur vos temps de compilation pour Visual Studio?

16

Quelles spécifications PC ont le plus grand impact sur vos temps de compilation? Disque? Vitesse de l'horloge? Nombre de cœurs de processeur?

Rob Allen
la source
1
N'est-ce pas une question de programmation? Aurait-il un public plus large sur StackOverflow?
Kurt W. Leucht

Réponses:

13

Le facteur que j'ai trouvé fait la différence n'est pas un facteur physique, mais un facteur logiciel: quel anti-virus avez-vous installé?

Certains produits antivirus ne gèrent pas très bien le développement de logiciels: ils voient tous ces fichiers d’application en train d’être réécrits, soupçonnent un jeu déloyal et analysent chaque fichier à chaque fois.

(Voir https://stackoverflow.com/questions/1170078/is-it-usual-for-aspx-files-to-take-5-10-seconds-to-save/1170129#1170129 pour plus.)

D'autre part, si vous souhaitez améliorer les performances d'une machine existante, rien ne vaut la mémoire maximale disponible pour un gain rapide.

Bevan
la source
Le PC au bureau utilise TrendMicro OfficeScan. Mon ordinateur portable dev à la maison utilise AVG 8.
Rob Allen
3
"Trend Micro". Oh cher. Si vous ne pouvez pas changer cela pour autre chose, dites adieu à toute performance.
Bevan
8

Voici quelques belles recherches Scott Hanselman explique comment utiliser plusieurs processeurs pour MSBUild. Les accélérations sont assez dramatiques.

Edit: Je dois cependant noter que pour avoir une bonne expérience de Visual Studio, vous avez besoin de beaucoup de RAM. :)

JP Alioto
la source
+1 Bon article sur le sujet. J'ai oublié cela. Je pense qu'il a également fait un podcast à ce sujet.
BinaryMisfit
4

Mon expérience personnelle avec une base de code C ++ de taille moyenne:

Vieille machine

Processeur: Pentium 4 HT 3.06 GHz
Mémoire: 1 Go de RAM DDR (PC 2100, donc 333 MHz)
Disque: Disque dur à 7 200 tr / min (UDMA 100, si la mémoire le permet)
Temps de compilation: 50 minutes

Nouvelle machine:

Processeur: Core i7 720QM (8 processeurs logiques) à 1,6 GHz, turbo boost à 1,73 GHz lorsque tous les cœurs sont actifs
Mémoire: 8 Go de RAM DDR3 à 1066 MHz
Disque: Disque dur à 7 200 tr / min (SATA 2)
Temps de compilation: 4 minutes (avec / MP )


Conclusion: Plus il y a de processeurs, plus on est de fous, même à des vitesses d'horloge relativement basses. Un SSD améliorerait encore les temps, mais d'après l'observation des messages de compilation, je doute que cela puisse l'améliorer de plus de 30 secondes environ.

mmyers
la source
3

Autant que je me souvienne, principalement processeur et mémoire. Un rapide Google a révélé divers ajustements qui peuvent améliorer les temps de compilation.

Joel a récemment publié un article sur l'effet des disques à l'état solide sur les compilations ici . La vitesse du disque n'améliore généralement pas considérablement le temps de compilation. Cependant selon ce il a un effet comme souligné par Lyngbym .

BinaryMisfit
la source
1

Pour construire des programmes C ++, le facteur n ° 1 avant tout est structurel: si le code source est fortement structuré verticalement, cela aura un impact dévastateur sur les temps de construction, en particulier les versions incrémentielles. J'ai restructuré localement quelques parties d'un projet visant à améliorer considérablement un Xeon à quatre cœurs. Dix-huit mois plus tard, les propriétaires du projet ne peuvent toujours pas respecter les temps de construction de mon horloge murale, même sur des machines Core i7.

L'effet (positif ou négatif) de la disposition de votre logiciel se multiplie sur tous les membres de votre équipe et sur chaque construction qu'ils réalisent.

Sam Harwell
la source
Avez-vous un lien qui décrit différentes structures de code s'il vous plaît. Je pense savoir de quoi vous parlez, mais je ne suis pas certain.
Rob Allen
Je ne parviens pas à trouver mes références, mais l’idée générale est 1) d’utiliser les déclarations anticipées dans la mesure du possible, 2) d’inclure des fichiers uniquement lorsque cette dernière ne fonctionne pas et 3) d’assurer que le fichier que vous incluez ne déclare pas davantage. que ce qui est nécessaire, ce qui pourrait à son tour inclure plus de fichiers dont vous n'avez pas besoin pour le fichier source particulier en cours de compilation (c.-à-d., gardez vos en-têtes petits et utilisez des déclarations en aval comme dans le cas des fichiers source).
Sam Harwell
1

Xoreax IncrediBuild est un système de build distribué qui a fait une énorme amélioration sur les temps de compilation où je travaille. (Malheureusement, les temps de lien sont encore longs, en particulier les versions qui utilisent l'optimisation du programme entier et la génération de code temps-lien, mais il faut s'y attendre.)

alt text

bk1e
la source