Comment accélérer le temps de construction? (C # / C ++ non géré)
Question
Une application existante sur laquelle je travaille actuellement nécessite environ 2 heures. Le projet compte environ 170 projets, dont 150 en C ++ non géré et les 30 autres en C # .Net 2.0.
Quelles sont quelques suggestions pour améliorer les temps de construction de quelque chose comme ça?
La solution
Concentrez-vous sur les projets C ++ - il est presque certain qu’ils seront les plus gros drains de temps pour la construction.
Quelques conseils pour réduire les temps de génération C ++:
- Assurez-vous d'inclure uniquement les en-têtes dont vous avez besoin dans les projets C ++!
- Utilisez les déclarations en aval autant que possible dans les en-têtes au lieu d'inclure d'autres en-têtes
- Utilisez le commutateur / MP pour construire en parallèle, si possible
- Utiliser efficacement l'abstraction
- Faites preuve de parcimonie dans l'utilisation des fonctions inline, car celles-ci coûtent plus cher au moment de la compilation
- Corrigez les dépendances afin de ne pas construire plus souvent que nécessaire
- Utilisez les en-têtes précompilés de manière appropriée
Hormis cela, si vous parlez en 2 heures, il existe souvent une solution simple et peu coûteuse (dans l’ensemble):
- Mettez à niveau votre matériel afin de réduire les temps de calcul
Autres conseils
Si vous installez IncrediBuild sur chaque ordinateur devant le construire, il répartit le processus de construction entre tous. des machines. Si vous voulez vraiment vous attaquer au problème, vous pouvez configurer quelques machines dédiées qui servent uniquement de clients IncrediBuild.
Sur une autre échelle, assurez-vous que tous les projets ont des en-têtes précompilés correctement configurés.
Vous pouvez essayer le système de construction distribué Incredibuild: http://www.xoreax.com/visual_studio. htm
Vous pouvez utiliser un outil tel que lint pour voir si vous avez inclus l'inclusion redondante. des fichiers dans vos projets c ++.
Il existe également un excellent article sur ce sujet à l'adresse Les jeux de l'intérieur .
Créez plusieurs solutions pour le projet, qui n'incluent que des sous-ensembles pertinents des projets et laissez une super solution pour les versions, etc.