132 votes

Temps de compilation très lents sur Visual Studio 2005

Nous sommes très lent temps de compilation, ce qui peut prendre plus de 20 minutes sur les dual core 2 ghz, 2G de Ram des machines.

Beaucoup de cela est dû à la taille de notre solution qui a augmenté de plus de 70 projets, ainsi que VSS qui est un goulot de bouteille en elle-même lorsque vous avez beaucoup de fichiers. (changeant de VSS n'est pas une option, malheureusement, donc je ne veux pas de cela pour descendre dans un VSS bash)

Nous sommes à la recherche à la fusion des projets (pas très agréable, comme on les aime à la séparation des préoccupations, mais c'est une bonne occasion de revoir certains de bois mort).

Nous sommes également à la recherche d'avoir de multiples solutions pour parvenir à une plus grande séparation des préoccupations et plus rapide temps de compilation pour chaque élément de l'application. Ce que je peux voir, va devenir l'enfer des dll que nous essayons de garder les choses dans synch.

Je suis intéressé de savoir comment les autres équipes ont abordé ce problème d'évolutivité, que faites-vous quand votre code de base atteint une masse critique que vous perdez la moitié de la journée à regarder la barre d'état de livrer les messages de compilation

Mise à JOUR Toutes mes excuses, j'ai oublié de mentionné que c'est une solution C#. Merci à tous pour le rpc suggestions, mais il a été quelques années depuis que je ai eu à se soucier d'en-têtes. A distance, je dis que je miss C++, mais je ne suis pas sûr que je veux revenir en arrière

EDIT:

Nice suggestions qui ont aidé à ce jour (ne pas qu'il n'y a pas d'autres excellentes suggestions ci-dessous, tout ce qui a aidé)

  • Nouvelle 3 ghz ordinateur portable - le pouvoir de la perte de l'utilisation des œuvres des merveilles quand whinging de gestion
  • Désactiver l'Anti Virus lors de la compilation
  • La "déconnexion" de VSS (en fait le réseau) lors de la compilation j'ai peut nous amener à supprimer VS-intégration de VSS complètement et de se tenir à l'utilisation de la VSS de l'INTERFACE utilisateur

Toujours pas de rip-renifler par le biais de la compilation, mais chaque petit geste compte.

Orion a mentionné dans un commentaire que les génériques peuvent avoir un jeu aussi. De mes tests, il ne semble pas y avoir un minimum de performances, mais pas assez élevée pour assurer - les temps de compilation peut être irrégulière en raison du disque de l'activité. En raison de contraintes de temps, mes tests ne comprend pas que de nombreux Génériques, ou plus de code, comme il apparaît dans le système live, donc, qui peuvent s'accumuler. Je ne voudrais pas éviter l'utilisation de génériques où ils sont censés être utilisé, juste pour le moment de la compilation de la performance

Solution de CONTOURNEMENT

Nous testons la pratique de la construction de nouvelles zones de l'application de nouvelles solutions, de l'importation dans le dernier dll requis, eux, leur intégration dans la plus grande solution quand nous sommes heureux avec eux.

Nous pouvons également faire de même pour le code existant par la création de solutions temporaires qui vient d'encapsuler les domaines nous devons travailler sur, et de les jeter après la réintégration du code. Nous avons besoin de peser le temps qu'il faudra pour réintégrer le présent code contre le temps de nous gagner à ne pas avoir de Rip Van Winkle, comme des expériences avec rapide recompiler au cours du développement.

74voto

Nate Points 656

L'Chromium.org l'équipe de la liste de plusieurs options pour l'accélération de la construction (à ce stade, environ à mi-chemin en bas de la page):

Dans l'ordre décroissant de speedup:

  • Installer le correctif Microsoft 935225.
  • Installer le correctif Microsoft 947315.
  • L'utilisation d'un vrai processeur multicœur (ie. un processeur Intel Core Duo 2; pas un Pentium 4 HT).
  • Utiliser 3 des constructions parallèles. Dans Visual Studio 2005, vous trouverez l'option dans Outils > Options... > Projets et Solutions > Construire et Exécuter > nombre maximal de projet parallèle construit.
  • Désactiver votre logiciel anti-virus pour .ilk, .pdb, .cc, .h fichiers et seulement vérifier la présence de virus sur modifier. Désactiver l'analyse du répertoire où vos sources de résidence. Ne pas faire de bêtises.
  • De stocker et de construire le Chrome code sur un deuxième disque dur. Il ne sera pas vraiment accélérer le construire, mais au moins, votre ordinateur va rester réactif lorsque vous ne gclient de synchronisation ou d'une construction.
  • Défragmenter votre disque dur régulièrement.
  • Désactiver la mémoire virtuelle.

58voto

TrueBlueAussie Points 26794

Nous avons près de 100 projets dans une solution et un dev moment de la construction de seulement quelques secondes :)

Pour le développement local s'appuie, nous avons créé un Visual Studio add-in qui change Project references de DLL references et de décharge de la non désirés projets (et une option permettant de basculer en arrière, bien sûr).

  • Construire l'ensemble de notre solution une fois
  • Décharger les projets que nous ne sommes pas en train de travailler sur et de modifier toutes les références de projet à la DLL références.
  • Avant le check-in changer toutes les références à partir d'une DLL pour les références de projet.

Notre construit maintenant que prendre quelques secondes lorsque l'on travaille sur quelques projets à la fois. Nous pouvons également toujours effectuer le débogage des projets supplémentaires car elle est reliée à la Dll de débogage. L'outil prend en général de 10 à 30 secondes pour faire un grand nombre de changements, mais vous n'avez pas à le faire souvent.

16voto

Alex Davies Points 131

Pour C# .NET construit, vous pouvez utiliser .NET Démon. C'est un produit qui prend en charge Visual Studio construire des processus afin de le rendre plus rapide.

Il le fait en analysant les changements que vous avez faits, et ne construit que le projet vous a réellement changé, ainsi que d'autres projets qui s'appuient effectivement sur les modifications que vous avez apportées. Cela signifie que si vous modifiez uniquement le code interne, un seul projet a besoin de construire.

14voto

jdelator Points 1336

Désactivez votre antivirus. Il ajoute des âges au temps de compilation.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X