Accélération de la compilation / du temps de liaison lors de l’utilisation de librairies boost

J’utilise les options du programme Boost , et la compilation d’un très petit code C ++ avec cela prend un certain temps (10 secondes, voire plus). Il a fallu 1 seconde pour comstackr le code sans la bibliothèque boost.

Une idée de comment augmenter le temps de compilation / liaison avec boost bibliothèque? C’est multi-plateforme, donc je dois comstackr le code avec Mac OS X / Linux / PC.

Il n’y a pas grand chose à faire au-delà des astuces habituelles:

  • minimiser les dépendances: insérez uniquement les en-têtes Boost dont vous avez réellement besoin et utilisez-les le plus possible (de nombreuses bibliothèques ont un seul en-tête “maître”, tel que boost/thread.hpp , mais également un sous-répertoire avec des en-têtes spécifiques, tels que boost/thread/shared_mutex.hpp ),
  • si possible, s’appuyer sur les déclarations à terme au lieu d’inclure l’en-tête complet,
  • si possible, incluez l’en-tête uniquement dans un fichier .cpp . Si vous l’incluez dans un en-tête, il doit être compilé à chaque fois qu’une unité de traduction comprenant cet en-tête est compilée. En règle générale, essayez de minimiser la quantité de code que vous avez dans les en-têtes,
  • tous les principaux compilateurs prennent en charge les en-têtes précompilés. Utilisez ceux-ci pour réduire le temps de compilation,
  • expérimenter avec l’ unité construit . Cela peut ou peut ne pas être un avantage dans votre cas.

Enfin, une dernière option consiste simplement à ne pas utiliser ces bibliothèques Boost spécifiques.

J’utilise parfois certaines bibliothèques Boost tôt, par commodité, et si / lorsque le temps de compilation est trop mauvais, je commence à regarder quelles bibliothèques sont coûteuses à comstackr et lesquelles pourraient être remplacées par un code relativement simple. Boost est souvent gêné par l’exigence d’être aussi général. Si vous n’avez pas besoin de quelque chose qui fonctionne sur des compilateurs de 8 ans, ou qui ne soit pas obligé de travailler sur autant de types différents, alors vous pourrez peut-être écrire un simple remplacement qui fonctionne pour vous et qui ne prend presque pas de temps. comstackr.

J’ai eu un bon succès avec l’ idiome de pare-feu du compilateur pour réduire les temps de compilation.