2008-10-03 9 views
3

Je viens de commencer à utiliser Boost 1.36. Ces bibliothèques seraient très utiles pour réduire la quantité de code nécessaire dans le projet logiciel C++ non géré sur lequel je travaille.Amélioration de la vitesse de compilation dans le projet VS à l'aide de bibliothèques C++ Boost

Cependant, lorsque j'ai essayé d'utiliser ces bibliothèques, mon temps de compilation a été multiplié par dix. Cela compenserait à peu près les gains de productivité que je recevrais en utilisant la bibliothèque.

J'utilise un 3GHz Intel Dual Core avec 2 Go de RAM et VS 2003.

Il y a un extrait du code que j'ajouté.

 

#include "boost/numeric/ublas/matrix.hpp" 
#include "boost/numeric/ublas/vector.hpp" 
#include "boost/numeric/ublas/matrix_proxy.hpp" 

typedef ublas::bounded_matrix <long double,NUM_OF_COLUMNS,NUM_OF_CATEGORIES,ublas::row_major> Matrix; 
typedef ublas::bounded_vector <long double,NUM_OF_COLUMNS> Vector; 

void Print(const Matrix& amount)
{

Vector total; 

total.clear(); 
for (int category = 0; category < NUM_OF_CATEGORIES; category++) 
{ 
    PrintLine(ublas::row(amount, category)); 
    total += ublas::row(amount, category); 
} 

PrintLine(total); 

}

est le problème avec VS 2003?
Je sais que VS 2008 est plus rapide mais la mise à niveau va être difficile à vendre.
Est-il juste que Boost est optimisé pour des temps d'exécution rapides et non des temps de compilation rapides? Est-ce que j'utilise simplement la bibliothèque Boost de manière sous-optimale?
Ou est-ce que j'utilise juste le mauvais outil pour le travail?

Répondre

5

Avez-vous essayé d'utiliser des en-têtes précompilés? Cela inclut les en-têtes boost dans StdAfx.h ou n'importe quel fichier d'en-tête que vous utilisez pour les en-têtes précompilés?

+0

Personnellement, je ne trouve pas que les en-têtes précompilés aident à accélérer le développement. Ils sont géniaux si vous construisez quelque chose, mais si vous changez des choses dans les fichiers d'en-tête, ils n'accélèrent pas toujours les choses. Pour cette raison, j'ai tendance à avoir une construction d'en-tête non précompilée pour le développement .... –

+1

Cela dépend des en-têtes que vous ajoutez. Si vous ajoutez des en-têtes à partir de votre code, alors, cela va empirer car cela force une reconstruction à chaque changement d'en-tête. Mais les en-têtes de bibliothèque (tels que boost) ne changent normalement pas. En utilisant pré-compilé pour les en-têtes de bibliothèque Qt dans notre application réduit le temps de compilation de 30-40% –

1

Avez-vous essayé Incredibuild? Cela vous permettra de distribuer votre build sur plusieurs ordinateurs. Je l'ai vu utilisé avec succès.

Questions connexes