Les avantages / inconvénients de l’unité se construit?

Depuis que je travaille dans une nouvelle entreprise, j’ai remarqué qu’ils utilisaient des fichiers cpp d’unité pour la majorité de notre solution, et je me demandais si quelqu’un pouvait me donner une raison définitive de savoir pourquoi et comment cela accélère le processus de génération. J’aurais pensé que l’édition d’un fichier cpp dans les fichiers d’unité forcerait la recompilation de tous.

Question très similaire et bonnes réponses ici: #include tous les fichiers .cpp dans une seule unité de compilation?

Le résumé semble être que réduire les frais généraux d’entrée / sortie est le principal avantage.

Voir également The Magic Of Unity Builds comme lié à la question ci-dessus.

Lee Winder a publié ses expériences avec Unity Builds – The Evil of Unity Builds

Sa conclusion est la suivante:

L’unité construit. Je ne les aime pas

C’est parce que cela évite le travail redondant. Analyse et compilation redondantes pour les dépendances. La liaison est également beaucoup plus complexe: vous avez soit vos exportations dans un seul object (ou quelques-unes), soit vous avez des exportations redondantes séparées dans la plupart des fichiers objects de la cible. Moins d’objects entraîne moins d’E / S et moins de temps de liaison. En fonction de votre configuration, l’inclusion peut être un problème – sur le système de «construction à l’unité» que j’utilise, la construction est finalement liée au processeur et / ou à la mémoire.