08/08/2008 - Linux Feed

LINUX « E-Pillole



Velocizzare la ricompilazione con ccache

Post inserito il 13/08/2007 da Fede in Easy Tricks

Per diversi motivi, ci si ritrova spesso a dover ripulire e ricompilare più volte gli stessi sorgenti. Operazione alquanto noiosa, che diventa decisamente frustrante nel caso in cui si abbia a che fare con un sorgente complesso e di dimensioni considerevoli.

Niente paura, per chi ancora non lo sapesse, la soluzione si chiama ccache e consente di alleviare le nostre sofferenze velocizzando non di poco la ricompilazione.

NOS ccache

Il funzionamento e la logica che sta dietro a ccache, sono riassunti nel nome stesso del programma, ccache > compiler cache, derivato direttamente dal suo antenato compilercache.

Sintetizzando al massimo, si tratta quindi di una cache per il nostro compilatore tuttofare di fiducia GCC, e non fa altro che memorizzare l'output della compilazione rendendolo disponibile per ogni successiva ricompilazione, e garantendo inevitabilmente tempi di ricompilazione minori e meno strazianti, nonchè un miglioramento tangibile della produttività della nostra macchina.

Il sorgente di ccache è ovviamente disponibile in download e per quanto riguarda Debian e Ubuntu, essendo presente nelle repository main di ogni release, è comodamente installabile via apt digitando:

sudo apt-get install ccache

Come sempre bisogna fare quando si installa una nuova applicazione, consultiamo l'help e le man pages per ottenere tutte le informazioni che ci occorrono:

ccache --help

man ccache

e siccome non potremo più farne a meno, esportiamo direttamente in ~/.bashrc o chi per esso la variabile d'ambiente PATH per ccache, di modo che il PATH venga impostato automaticamente ad ogni login nella shell:

export PATH=/usr/lib/ccache:$PATH

Operazioni preliminari completate, è ora giunto il momento di fare qualche semplice esempio per tradurre in soldoni i vantaggi che si ricavano dall'utilizzo di ccache.

Direi che possiamo partire compilando proprio il "microscopico" sorgente di ccache (V. 2.4):

time make
................
................
................
real    0m2.656s
user    0m2.152s
sys     0m0.248s

Ripuliamo i sorgenti:

make clean

e ricompiliamo di nuovo:

time make
................
................
................
real    0m0.784s
user    0m0.424s
sys     0m0.124s

Ottimo no? :)

Per chi non fosse ancora del tutto convinto, facciamo un'altro esempio compilando e ricompilando un sorgente un pochino più corposo, Pidgin (V. 2.1.0):

time make
.................
.................
.................
real    6m36.797s
user    4m38.296s
sys     1m20.773s

Ripuliamo i sorgenti:

make clean

e ricompiliamo di nuovo:

time make
.................
.................
.................
real    3m9.701s
user    1m34.638s
sys     1m8.608s

Credo possa bastare...vero? ;)

Diamo una sbirciatina alle statistiche:

ccache -s

cache directory                     /home/fede/.ccache
cache hit                            399
cache miss                           493
called for link                      106
compile failed                         4
preprocessor error                     4
not a C/C++ file                       2
autoconf compile/link                 70
unsupported compiler option            1
no input file                         18
files in cache                       986
cache size                          17.0 Mbytes
max cache size                     976.6 Mbytes

e "rendiamo grazie" a ccache!! ASSOLUTAMENTE INDISPENSABILE


Post letto 1002 volte | Commenti (4) | Bookmark   del.icio.us    segnalo


Commento postato da anonimo il 13/08/2007
scusa la domanda da newbie...
ho seguito la tua guida, ma non ho capito come si fa ad utilizzare ccache...
spero in un tuo aiuto.
grazie.

Commento postato da Fede il 13/08/2007
@anonimo

cosa non ti è chiaro??

forse l'export del PATH??

in pratica, per utilizzare ccache bisogna esportare il PATH ogni volta che apri il terminal...

per evitare di doverlo fare ogni volta è sufficiente inserire la riga:

export PATH=/usr/lib/ccache:$PATH

nel file nascosto .bashrc che si trova nella tua home...

fai così:

gedit ~/.bashrc

e in fondo al file inserisci:

export PATH=/usr/lib/ccache:$PATH

Salva, chiudi il file e riavvia il terminal...
In questo modo ccache è abilitato automaticamente e non dovrai più fare nulla...

Spero di essere stato un pochino più chiaro :)

ciaociao

Commento postato da anonimo il 13/08/2007
grazie mille! adesso funziona tutto!
grazie per il chiarimento!
comunque sei sempre molto chiaro e preciso.
ciao e grazie.

Commento postato da Fede il 13/08/2007
@anonimo

grazie a te ;)

good!! tutto OK :)

ciaociao

Commenta Post

(opzionale)
(opzionale)


Codice antispam: Codice antispam