accélérer la compilation (pré-compilation ?)

accélérer la compilation (pré-compilation ?) - C++ - Programmation

Marsh Posté le 13-12-2004 à 15:35:55    

Bonjour,
y a t il une méthode pour faire en sorte que les fichiers header (les .h ou .hpp) soient pré-compilés ? cela permettrait de gagner énormément de temps. Avec gcc ou ses versions sous windows si possible.
Merci

Reply

Marsh Posté le 13-12-2004 à 15:35:55   

Reply

Marsh Posté le 13-12-2004 à 15:38:20    

oui, man gcc (>= 3.2) & msdn
sinon ccache sous linux
et distcc aussi


Message édité par schnapsmann le 13-12-2004 à 15:40:20
Reply

Marsh Posté le 13-12-2004 à 15:38:34    

Citation :

% cat foo.h
#define FOO 10
 
% cat foo.c
#include "foo.h"
#include <stdio.h>  
int main() { printf("%d\n", FOO); }
 
% ls foo.*
foo.c foo.h  
 
% gcc -x c-header -c foo.h  
 
% ls foo.*
foo.c foo.h foo.gch  
 
% gcc -o foo foo.c  
 
% ./foo
10  
 
% rm foo.h
 
% gcc -o foo foo.c
 
% ./foo
10

Reply

Marsh Posté le 13-12-2004 à 15:39:08    

schnapsmann a écrit :

oui, man gcc & msdn
sinon ccache sous linux
et distcc aussi

faut aussi voir à réduire les dépendances de compilations.

Reply

Marsh Posté le 14-12-2004 à 08:13:08    

j ai fait un test avec ccache sous linux et je passe d'une 1ere compilation de plus de 40s à 7s donc ça accélère le truc, mais il y a la première compilation à effectuer.
Y a t il un compilateur "à la volée" qui peut compiler au fur et à mesure que l'on tape du code ? ça serait pratique pour détecter de suite les erreurs et ainsi gagner énormément de temps...

Reply

Marsh Posté le 14-12-2004 à 08:47:43    

il n'y a pas de quoi merci [:itm]
à la volée > certains ide détectent de possibles erreurs de syntaxe et ou de parenthèsage, mais en aucun cas il ne s'agit de compilation à la volée


---------------
From now on, you will speak only when spoken to, and the first and last words out of your filthy sewers will be "Sir!"
Reply

Marsh Posté le 14-12-2004 à 08:54:22    

schnapsmann a écrit :

il n'y a pas de quoi merci [:itm]
à la volée > certains ide détectent de possibles erreurs de syntaxe et ou de parenthèsage, mais en aucun cas il ne s'agit de compilation à la volée


... en C++. Car les 2 gros problèmes, c'est le préprocesseur et le code template, où une simple modification d'une ligne peut changer le sens de millions de milliards de lignes.  
 
Il me semble qu'en Java, ça existe (en tout cas, je me souviens de Visual Age for Java 1.1 qui compilait automatiquement la méthode que l'on venait juste d'éditer, mais ça remonte à il y a 5 ans au moins).
 
Par contre, avec wxWidgets, il faut:
1. éviter autant que possible de mélanger la couche présentation avec le reste, car ça plombe vite un projet.
2. éviter d'inclure wxAll.h, et plutôt utiliser les fichiers spécifiques, c'est toujours ça de gagner
 

Reply

Marsh Posté le 14-12-2004 à 10:27:44    

VTK au commencement tout était dans un unique fichier, puis ils ont tout découpé car trop lent à compiler. Là, en étudiant de près les header inclus etc... et en en virant des indésirables j'ai réduit le temps de compilation par 2. En utilisant les pch, sur certains projet ca a été 10 fois plus rapides à compiler, sinon sur VTK toujours, en faisant une grosse bidouille grossière pour pas fouttre en l'air le système des includes (inconvénient des pch) ben je suis arrivé à réduire par 3 (2000 fichiers en tout).


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
Reply

Marsh Posté le 14-12-2004 à 10:41:21    

scons permet d'éviter de recompiler des fichiers non modifiés

Reply

Marsh Posté le 14-12-2004 à 10:51:19    

ouai
scons + ccache

Reply

Marsh Posté le 14-12-2004 à 10:51:19   

Reply

Marsh Posté le 14-12-2004 à 11:23:09    

scons sait faire ça ?


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
Reply

Marsh Posté le 14-12-2004 à 11:27:01    

quoi ?

Reply

Marsh Posté le 14-12-2004 à 11:28:39    

Tu me déçois là.

Citation :

éviter de recompiler des fichiers non modifiés


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
Reply

Marsh Posté le 14-12-2004 à 11:50:31    

ben oui, scons se base sur la signature md5 des fichiers et non leur mtime.

Reply

Marsh Posté le 14-12-2004 à 13:04:52    

signer un fichier avec md5 c'est plus rapide que de tester son mtime ?


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
Reply

Marsh Posté le 14-12-2004 à 13:28:53    

non, mais c'est plus fiable. Et comme les fichiers sont petits, c'est transparent

Reply

Marsh Posté le 14-12-2004 à 14:14:31    

Ouai bon j'ai fait un bide quoi. C'est juste que c'est la fonctionnalité de base d'un makefile de ne pas recompiler pour rien un fichier.
http://www.yelims.com/Forum/Forum10.gif


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
Reply

Marsh Posté le 14-12-2004 à 14:27:01    

ben il te faut une heuristique pour déterminer si un fichier à changer ou pas, sinon, il faut conserver la copie de l'original.

Reply

Marsh Posté le 14-12-2004 à 14:57:15    

Ah ok je pige mieux. Si la date a changé, alors, il fait une vérification md5 en + au cas où la date a changé mais pas le contenu (sauvegarde accidentelle, ...).


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed