Les techniques de langage
Pimpl Idiome
Jetez un oeil à la Pimpl idiome ici, et ici, aussi connu comme un pointeur opaque ou gérer les classes. Non seulement d'accélérer la compilation, il augmente également l'exception de sécurité lorsqu'il est combiné avec un non-lancer swap fonction. Le Pimpl idiome vous permet de réduire les dépendances entre les en-têtes, et réduit la quantité de recompilation qui doit être fait.
Déclaration
Dans la mesure du possible, l'utilisation de l'avant déclarations. Si le compilateur a seulement besoin de savoir qu' SomeIdentifier
est une structure ou un pointeur ou que ce soit, de ne pas inclure l'ensemble de définition, de forcer le compilateur à faire plus de travail que nécessaire. Cela peut avoir un effet de cascade, faisant de cette manière plus lente que dont ils ont besoin pour être.
Le I/O , les flux sont particulièrement connus pour ralentir les builds. Si vous en avez besoin dans un fichier d'en-tête, essayez de #y compris <iosfwd>
au lieu de <iostream>
et #inclure l' <iostream>
d'en-tête dans le fichier d'implémentation. L' <iosfwd>
- tête tient à l'avant garde des déclarations. Malheureusement, les autres en-têtes standard n'avez pas de déclarations d'en-tête.
Préfèrent passer par référence à passer-par-valeur en fonction de signatures. Cela permettra d'éliminer la nécessité de #inclure le type de définitions dans le fichier d'en-tête et vous aurez seulement besoin de déclarer le type. Bien sûr, préfèrent const références à la non-const références à éviter obscur de bugs, mais c'est une question par une autre question.
Les Conditions De La Garde
L'utilisation de la garde des conditions de garder les fichiers d'en-tête de plus d'une fois dans une seule unité de traduction.
#pragma once
#ifndef filename_h
#define filename_h
// Header declarations / definitions
#endif
En utilisant à la fois le réseau et les ifndef, vous bénéficiez de la portabilité de la plaine de macro solution, ainsi que la vitesse de compilation, l'optimisation de certains compilateurs peuvent le faire en présence de l' pragma once
directive.
Réduire l'interdépendance
Le plus modulaire et moins interdépendants votre code de conception est, en général, moins souvent, vous aurez à tout recompiler. Vous pouvez également mettre fin à la réduction de la quantité de travail que le compilateur a à faire à une personne de bloc en même temps, en raison du fait qu'il a moins de garder une trace de.
Options du compilateur
Les En-Têtes Précompilés
Ceux-ci sont utilisés pour compiler une section commune des en-têtes une fois pour de nombreuses unités de traduction. Le compilateur compile une fois, et enregistre son état interne. Cet état peut ensuite être chargé rapidement pour obtenir une longueur d'avance dans la compilation d'un autre fichier avec le même ensemble d'en-têtes.
Assurez-vous d'inclure uniquement rarement changé des trucs dans les en-têtes précompilés, ou vous pourriez vous retrouver à faire le plein reconstruit plus souvent que nécessaire. C'est un bon endroit pour STL - têtes et d'autres de la bibliothèque de fichiers à inclure.
ccache est un autre utilitaire qui prend avantage des techniques de mise en cache pour accélérer les choses.
Utiliser Le Parallélisme
De nombreux compilateurs / IDEs en charge l'utilisation de plusieurs cœurs/Cpu pour faire de la compilation simultanément. Dans GNU Make (habituellement utilisé avec GCC), l'utilisation de l' -j [N]
option. Dans Visual Studio, il y a une option dans les préférences pour lui permettre de construire de multiples projets en parallèle. Vous pouvez également utiliser l' /MP
option de fichier de niveau paralellism, au lieu de simplement au niveau du projet paralellism.
Parallèlement d'autres utilitaires:
Un faible Niveau d'Optimisation
Le plus le compilateur essaie d'optimiser, plus il a de travailler.
Bibliothèques Partagées
Le déplacement de vos moins fréquemment code modifié dans les bibliothèques peuvent réduire le temps de compilation. En utilisant les bibliothèques partagées (.so
ou .dll
), vous pouvez réduire le temps de lien.
Obtenir un Ordinateur plus Rapide
Plus de RAM, plus rapide des disques durs (y compris les disques Ssd), de plus de Processeurs/cœurs feront une différence dans la vitesse de compilation.