Ho un progetto enorme, qualcosa di circa 150.000 LOC di codice C++. Il tempo di costruzione è di circa 15 minuti. Questo progetto consiste in molti sotto-progetti di diverse dimensioni.Il tempo di compilazione GCC non beneficia molto delle intestazioni precompilate
Ho creato intestazioni precompilate separate per ogni sottoprogetto, ma quando le utilizzo il tempo di costruzione rimane all'incirca uguale. Sembra che il tempo di costruzione sia inferiore del 5-10% percento, non di più.
intestazioni precompilate è sicuramente utilizzato, io uso -Winvalid-pch
opzione e ho cercato di compilare con -H
opzione del compilatore, le mie intestazioni precompilate appare in uscita con il simbolo 'bang', che significa che il compilatore è in grado di utilizzare intestazione precompilata.
Tutte le intestazioni precompilate non sono molto grandi, ogni file è qualcosa di circa 50 Mb. Io uso lo script python, ho trovato here per generare una lista delle intestazioni precompilate più utilizzate, quindi la mia lista di candidati alla precompilazione è abbastanza buona.
Esistono strumenti gratuiti/open source per l'ottimizzazione della build? Sembrava che l'utilità standard make
non fosse in grado di misurare i tempi di costruzione di bersagli diversi. Non riesco a trovare il modo di ottenere le statistiche per target diversi con make
. Non sto parlando di analisi di dipendenza o qualcosa di avanzato. Voglio solo sapere per quali obiettivi la maggior parte del tempo è stata sprecata.
Inoltre, sembrava che GCC fosse abbastanza inefficiente nel gestire le intestazioni precompilate. Non ero in grado di ottenere una compilazione di sottoprogetti notevolmente più veloce, la massima velocità che ottengo è del 20% su un progetto che richiede tre minuti per essere realizzato. Sembrava che fosse più facile ed economico acquistare una macchina più veloce con unità a stato solido piuttosto che ottimizzare i tempi di costruzione su Linux con GCC.
provare a creare sia con il codice sorgente sia con la directory di output che si trova in/dev/shm. Se il tempo di costruzione diminuisce drasticamente, il tuo file system di build precedente è stato il principale contributore per la creazione di tempo. – bobah
Non lo definirei enorme.Più simile a un progetto tra piccole e medie dimensioni :) –
@ BЈовић d'accordo, ma aumentare la compilazione più veloce (o almeno comparabile) sulla mia macchina. – Lazin