2009-07-29 9 views
5

Une application héritée que je travaille sur currenty prend ~ 2 heures à construire. Le projet compte environ 170 projets dont 150 sont du C++ non géré et les 30 autres C# .Net 2.0.Comment accélérer le temps de construction? (C#/Unmanaged C++)

Quelles sont quelques suggestions sur les façons d'améliorer les temps de construction pour quelque chose comme ça?

+1

Des questions similaires ont déjà été posées. Faites une recherche de "incredibuild" pour trouver un certain nombre d'entre eux. – crashmstr

+0

Avez-vous besoin de le construire à partir de rien du tout, ou les builds incrémentaux sont-ils lents? –

+0

Nous sommes obligés de construire à partir de zéro assez souvent. Chaque fois qu'un changement est fait pour être QC, nous avons besoin d'une construction complète. – Kyle

Répondre

8

Mise au point sur les projets C++ - ils sont presque garantis d'être le plus grand drains de temps pour la construction.

Quelques conseils pour tirer le C++ temps de construction vers le bas:

  • Faire en sorte que vous êtes seulement, y compris les en-têtes que vous avez besoin dans les projets C++!
  • Utiliser des déclarations avant chaque fois que possible les en-têtes au lieu d'inclure d'autres têtes
  • Utilisez si possible
  • Utiliser abstraction efficacement
  • le/MP passer à construire en parallèle, estre parque dans l'utilisation des fonctions en ligne, puisque ceux-ci coûtent plus cher au moment de la compilation
  • Obtenez les dépendances correctes, donc vous n'êtes pas construire plus souvent que nécessaire
  • Utiliser les en-têtes pré-compilés de manière appropriée

En dehors de cela, si vous parlez 2 fois heure de construction, souvent il y a une solution simple, pas cher (dans un grand chemin de l'image), ainsi:

  • Améliorez votre matériel pour aider à réduire les temps de calcul
+0

100% d'accord. Quel compilateur utilisez-vous? Vérifiez les systèmes de mise en cache du compilateur appropriés (par ex.ccash pour gcc) SSD pour le serveur de construction mith vaut la peine de regarder –

+0

J'utilise principalement MSVC, mais la plupart des arguments ci-dessus sont des stratégies de compilation C++ à usage général. La question était probablement spécifique à MSVC, car elle mélangeait C++ et C#. –

2

Vous pouvez essayer le système de construction distribué IncrediBuild: http://www.xoreax.com/visual_studio.htm

+0

Est-ce que cela fonctionne aussi pour le lien? Certains de mes temps de construction ennuyeux sont dus à la liaison. –

0

Faire de multiples solutions pour le projet qui ne comprennent que des sous-ensembles pertinents des projets et laissent une solution super pour les versions etc.

4

Si vous installez IncrediBuild sur chaque machine qui doit construire distribue le processus de construction entre toutes les machines. Si vous voulez vraiment jeter du matériel sur le problème, vous pouvez configurer quelques machines dédiées qui ne servent que de clients IncrediBuild.

À une échelle différente, assurez-vous que chaque projet comporte des en-têtes précompilés correctement configurés.

2

Vous pouvez utiliser un outil tel que lint pour voir si vous avez des fichiers inclus redondants dans vos projets C++.

Il existe également un excellent article sur ce sujet au Games from Within.

+0

Hmm cela semble assez intéressant. Je vous remercie. – Kyle

Questions connexes