Nous obtenons des temps de compilation très lents, qui peuvent prendre plus de 20 minutes sur les machines double cœur 2 GHz, 2G Ram.
Cela est dû en grande partie à la taille de notre solution qui est passée à plus de 70 projets, ainsi qu'à VSS qui est un goulot d'étranglement en soi lorsque vous avez beaucoup de fichiers. (échanger VSS n'est malheureusement pas une option, donc je ne veux pas que cela descende dans une bash VSS)
Nous envisageons de fusionner des projets. Nous cherchons également à avoir plusieurs solutions pour obtenir une plus grande séparation des préoccupations et des temps de compilation plus rapides pour chaque élément de l'application. Ce que je peux voir deviendra un enfer DLL alors que nous essayons de garder les choses synchronisées.
Je suis intéressé de savoir comment d'autres équipes ont géré ce problème de mise à l'échelle, que faites-vous lorsque votre base de code atteint une masse critique que vous perdez la moitié de la journée à regarder la barre d'état livrer des messages de compilation.
MISE À JOUR J'ai négligé de mentionner qu'il s'agit d'une solution C #. Merci pour toutes les suggestions C ++, mais cela fait quelques années que je n'ai plus à me soucier des en-têtes.
ÉDITER:
Bonnes suggestions qui ont aidé jusqu'à présent (sans dire qu'il n'y a pas d'autres bonnes suggestions ci-dessous, juste ce qui a aidé)
- Nouvel ordinateur portable 3GHz - la puissance de la perte d'utilisation fait des merveilles lorsque vous vous plaignez de la direction
- Désactiver l'antivirus lors de la compilation
- `` Déconnexion '' de VSS (en fait le réseau) pendant la compilation - je peux nous amener à supprimer complètement l'intégration VS-VSS et à nous en tenir à l'utilisation de l'interface utilisateur VSS
Toujours pas de rip-snort à travers une compilation, mais chaque bit aide.
Orion a mentionné dans un commentaire que les génériques peuvent aussi avoir un jeu. D'après mes tests, il semble y avoir un impact minimal sur les performances, mais pas assez élevé pour être sûr - les temps de compilation peuvent être incohérents en raison de l'activité du disque. En raison des limites de temps, mes tests n'incluaient pas autant de génériques, ou autant de code, que cela apparaîtrait dans le système en direct, de sorte que cela peut s'accumuler. Je n'éviterais pas d'utiliser des génériques là où ils sont censés être utilisés, juste pour les performances de compilation
SOLUTION DE CONTOURNEMENT
Nous testons la pratique consistant à créer de nouveaux domaines de l'application dans de nouvelles solutions, en important les dernières DLL selon les besoins, en les intégrant dans la solution plus large lorsque nous en sommes satisfaits.
Nous pouvons également les faire de même avec le code existant en créant des solutions temporaires qui encapsulent simplement les domaines sur lesquels nous devons travailler et en les jetant après la réintégration du code. Nous devons peser le temps qu'il faudra pour réintégrer ce code par rapport au temps que nous gagnons en n'ayant pas Rip Van Winkle comme des expériences de recompilation rapide pendant le développement.