6
votes

Accélérer la compilation dans Visual Studio 2005

Quels sont les meilleurs moyens d'accélérer le temps de compilation dans Visual Studio 2005 pour une solution contenant principalement des projets C ++?


0 commentaires

9 Réponses :


2
votes

Les en-têtes précompilés peuvent être utiles si vous incluez des en-têtes complexes (STL, Boost, par exemple) directement dans beaucoup de fichiers.

Assurez-vous que votre construction n'accède pas au réseau par inadvertance ou intentionnellement.


0 commentaires

4
votes

Vous pouvez créer un en-tête pré-compilé des fichiers qui ne changeront normalement pas fréquemment. Cela peut augmenter considérablement votre temps de compilation.


1 commentaires

Je n'ai jamais remarqué cela quand j'ai commencé à utiliser Visual Studio. Je suis passé de code :: des blocs qui semblent le faire automatiquement pour vous.



6
votes

Outre en plus des en-têtes avant compilation, il existe un nombre d'autres choses qui pourraient vous ralentir:

  • Vérus Vérification du logiciel - Peut avoir un impact méchant sur les constructions. Si vous avez un vérificateur de virus, essayez de l'éteindre et de voir quel type d'amélioration vous obtenez.
  • RAM bas - Peut suffisamment de RAM entraînera de nombreux autres disques. CONT ->
  • HDD lent - Vous devez écrire au disque quel que soit le lecteur lent, comme ceux présents dans de nombreux ordinateurs portables et des systèmes de bas de gamme, tueront vos constructions. Vous pouvez obtenir un lecteur plus rapide, un tableau RAID ou SSD
  • Processeur lent (s) ... bien sûr.
  • improbable, mais: vérifiez et voyez si vos projets référencent des actions réseau. Avoir à tirer des fichiers sur le réseau avec chaque construction serait un grand ralentissement.

    Modifier Peu de réflexions supplémentaires:

    • Si votre solution contient un grand nombre de projets, vous pouvez envisager de créer d'autres solutions «sous» contenant uniquement les projets que vous travaillez activement. Cette possibilité dépend de la manière dont les projets sont interdépendants.
    • Les constructions de projet peuvent avoir des commandes d'événement pré-établir des événements de PRE-et-POST. Vérifiez les propriétés de vos projets pour voir s'il existe des événements de construction coûteux spécifiés.

2 commentaires

Si vous ne voulez pas désactiver complètement la vérification des virus, de nombreux scanners vous permettent de spécifier des exceptions. Ajouter *. C, * .cpp, * .h * .hpp, * .OBJ, * .lib, * .pch, * .ncb à la liste d'exceptions vous obtient 95% du speedUp, et attrape toujours tous les virus communs.


Les actions réseau sont un énorme goulot d'étranglement. Mon temps de construction est passé de ~ 1 minute (pour un projet de démonstration d'un code trivial de code) à environ 1 seconde lorsque je suis passé de notre part de réseau à mon SSD local.




0
votes

Si vous avez beaucoup de projets dans la solution, supprimez-les d'entre eux. S'ils sont référencés en tant que projets, vous pouvez plutôt faire référence à la sortie binaire (utilisez le bouton Parcourir dans la boîte de dialogue Ajouter une référence). Cela supprime beaucoup de contrôle de dépendance dans la solution. Ce n'est pas idéal mais il accélère les choses.


0 commentaires

3
votes
  • Unity construit .
  • en-têtes précompilés . < / li>
  • Windows 7 construit beaucoup plus rapidement que Windows XP (si cela vous concerne).
  • Éteignez les scanners anti-virus.
  • Minimiser les dépendances (c'est-à-dire #include de fichiers d'en-tête).
  • minimiser la quantité de code de modèle.

0 commentaires

3
votes

Au niveau du code, il est utile de minimiser la quantité d'en-têtes incluse par d'autres en-têtes. Les fichiers de chargement et de lecture répétés peuvent avoir un impact important. Au lieu de cela, avancez les choses dans la mesure du possible. Par exemple:

#include <iosfwd>
#include <string>
#include "M.h"
#include "R2.h"
#include "A2.h"

class M2;
class A;
class R;
template<class C> class T;

class X{
  M member; // definition of M is required
  M2 *member2; // forward declaration is sufficient for pointers & references
public:
  // forward declaration of argument type A is sufficient
  X(const A &arg);

  // definition required for most std templates and specializations
  X(const std::string &arg);

  // forward declaration of your own templates is usually okay...
  void f(T<int> t);

  // unless you're defining a new one. The complete definition
  // must be present in the header
  template<class Z>
  void whatever(){
    // blah blah
  }

  R f(); // forward declaration of return type R is sufficient

  // definitions of instantiated types R2 and A2 are required
  R2 g(A2 arg){
    return arg.h();
  }

  // ostream is forward-declared in iosfwd
  friend std::ostream &operator << (std::ostream &o, const X &x);
};


0 commentaires

0
votes

La solution que nous avons utilisée était Incredibuild . Il suffit de lancer plus de matériel au problème. En plus de toutes les machines de développement (assez puissantes), nous avons eu un certain nombre de serveurs 4 cœurs qui ne font que compiler.


0 commentaires

0
votes

Changer votre plate-forme de solution sur "Toute processeur" donnée sur le haut de Visual STDIO, la vitesse de construction de votre programme sera définitivement augmentée.


0 commentaires