Le projet utilise C++ et le code prend environ une demi-heure pour construire sur une boîte de 32 noyau. Ce temps peut être plus long, par ex. 1 heure + sur une machine locale de développeur.
Je remarque que l'efficacité est faible quand on fait la construction. Il suffit de rester assis et de regarder c'est une perte de temps.
Un cas typique est la suivante: modifier certains code, puis créer, si la version échoue, modifie à nouveau, créer, tester, si le test échoue, modifiez et construisez à nouveau.
Étant donné que le code est plein de modèles, toute modification de .h prendra beaucoup de temps à construire.
Si un développeur gaspille 2 heures par jour dans le processus de construction, le coût serait trop élevé.
Comment améliorer l'efficacité lorsque vous traitez avec un projet selon lequel la base de code actuelle a-t-elle besoin de gagner longtemps à construire?
Rompez la base de code dans les modules. Ne les reconstruisez que lorsque des changements les impact. Rompez vos en-têtes en petits groupes de fonctions connexes si des fonctions inutilisées sont rarement incluses.
Les en-têtes stables sont essentiels. Testez-les bien avant de les jeter dans le programme plus vaste.
Sérieusement, c'est pourquoi nous avons inventé des modules en premier lieu. Recompilez seulement ce qui a changé et laissez le linker connecter le reste.
Découvrez quel est votre cou de bouteille. Ce pourrait être la CPU n'est pas ce qui vous tient.
Des boucles de rétroaction lente, quelle que soit la langue/le cadre/la plate-forme, conduit à l'inefficacité. Les gens ne sont vraiment pas bons pour sauter du contexte au contexte et faire un bon usage de chaque minute de la journée, la direction doit donc comprendre le coût des délais de construction de ce projet. Un développeur pourrait peut-être essayer 6 changements par jour au lieu de 20+ avec des constructions de 15 minutes.
Une fois que cela se réalise et que des boucles de retour d'information plus rapides sont prioritaires, examinez d'autres réponses pour la manière dont cela pourrait être atteint. Cela ne se produira pas comme un projet latéral si des développeurs sont invités à hiérarchiser une nouvelle fonctionnalité à la place.