[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Programmation et entêtes précompilées
|
From |
GISQUET Christophe <gisquet at inforezo dot org> |
|
Subject |
Programmation et entêtes précompilées |
|
Date |
Fri, 13 Aug 2004 15:18:24 +0200 (CEST) |
Bonjour,
à la recherche de divers moyens d'accélèrer la compilation de "grosses"
bibliothèques, j'ai cherché du côté des "entêtes précompilées" (on me
pardonnera j'espère cette traduction à la volée de "precompiled headers).
J'ai donc trouvé 2 choses qui pourraient intéresser du monde et
éventuellement appeler le commentaire d'autres. Le lien suivant m'a en
particulier donner les bases de ces infos:
http://forum.hardware.fr/hardwarefr/Programmation/sujet-56114-1.htm
(desole de numeroter, mais j'espère être plus clair comme ça, au moins
pour moi)
I. ccache (http://ccache.samba.org/)
Ce programme est relativement simple d'utilisation, dans le sens qu'on le
substitue au compilateur (par le biais du makefile ou en définissant un
alias). Par exemple:
alias gcc='ccache /usr/local/tools/gcc-3.3.1/bin/g++ $*'
ou bien dans le Makefile:
GXX=ccache g++
ou encore via les liens symboliques (la résolution du compilateur à
utiliser semblant se faire par le nom du lien).
ccache va alors analyser fichiers et lignes de commande passés au
compilateur. Il associe le résultat du compilo à un identifiant unique (un
hashcode), puis sauvegarder le tout dans $HOME/.ccache (jusqu'à hauteur de
1Go, par défaut).
Ca me paraît bien marcher, car pour 3 ou 4 compilations de 2
bibliothèques, j'ai ces stats:
cache hit 149
cache miss 373
files in cache 746
cache size 120.4 Mbytes
En terme de temps de compilation (mesuré avec time):
. lib 1:
Sans ccache: real/user: 11m10/9m20 (arrondi a la dizaine de s)
Avec: premier coup, 9m40/7m50 puis 3m/2m10
. boost (www.boost.org):
avec: 16m50/13m30
sans: 18m/15m
Ceci correspond à des premières compilations (pas de hit dans le cache).
Ce sont bien sûr des mesures grossières (même pas de mesure moyennée)
Pour la lib 1, on peut voir que le temps de compilation est grandement
réduit. Dans l'ensemble, j'ai l'impression que la vraie utilité est en
cours de développement, où l'on hésite moins à recompiler pour vérifier,
vu le résultat de la 2e recompilation (après un make clean)
Je n'ai pas cherché d'écho négatif pour l'instant, mais ça m'a l'air très
sympathique.
II. gcc >=3.4.0
Pour l'instant en "preview" à ce qu'il semblerait, gcc gère une entête
précompilée par projet. C'est donc relativement lourd d'écrire un projet
axé autour d'un header principal (on pourrait citer des logiciels
proprio ici, mais là n'est certainement pas la question).
J'attends pour ma part de voir la solution éprouvée par d'autres gens dans
la mesure où ccache me satisfait.
III. distcc (http://distcc.samba.org/)
Evoqué dans le premier lien, cet outil permet de distribuer la charge de
compilation à travers un réseau de machines (hétérogènes ou non, mais il
faut alors avoir à disposition un cross compiler). Dans mon cas, je ne
juge pas utile d'utiliser ma 2e machine (un Pentium a 200MHz...)
Voilà donc quelques programmes qui me semblent intéressants. Je pense
utiliser dorénavant ccache autant que possible, mais je me demande tout de
même si des gens sur cette liste ont un avis/une expérience/une anecdote
sur l'un de ces outils.
Bonne continuation,
--
Christophe GISQUET
Hello! This is a signature virus! Please copy me into your .signature