Come individuare il compilatore ?Come faccio a sapere dove trascorre il tempo il compilatore?
La mia build è troppo lenta, sto già usando un RAMdisk per i file temporanei VC++ e non fa alcuna differenza. (Ho un SSD, quindi non mi aspettavo alcuna differenza.)
La maggior parte dei singoli file C++ in questo progetto richiede ca. 2 secondi per la compilazione che sembra terribile (dato che anch'io non ho parallelizzazioni in-project perché sto usando VS2005).
Come posso ottimizzare questo? Non ottimizzare senza profiling, ma come faccio a profilare il compilatore?
Nota: Queste non erano veramente utile:
- Profiling the C++ compilation process
- Displaying build times in Visual Studio? (Non è del tutto priva di merito anche se ... se si fa una compilation file singolo, invece di tutto il progetto, mostrerà il tempo impiegato per un singolo file: in questo modo vedo che abbastanza alcuni file qui prendono più di 5 secondi, alcuni addirittura 10 secondi quando viene compilato stand-alone)
Aggiungiamo un buon commento: Avete molti modelli? Quanto sono grandi i tuoi file in media? Avete controllato solo il numero minimo di intestazioni necessarie
No, non l'ho fatto. Potrei (e certamente lo farò), naturalmente. Potrei riuscire a trovare qualcosa, ma è tutto speculazione e tentativi ed errori!
"Tutti" ti dice che dovresti ottimizzare solo dopo la misurazione/profilazione, ma quando ottimizzi i tempi di compilazione, siamo di nuovo in prova con l'errore &?
Nota: la proposta di "hack" dai commenti con __TIME__
fa non lavoro, almeno non su Visual-C++, perché (come the docs stato): Il più recente fase di compilazione della file sorgente corrente. Il tempo è una stringa letterale della forma hh: mm: ss. - Immagino che si possa almeno ottenere tempi per le singole unità di compilation con questo timbro, ma non aiuta a scavare in una unità di compilazione.
Avete molti modelli? Quanto sono grandi i tuoi file in media? Hai controllato solo il numero minimo di intestazioni necessarie? – stefan
stai usando le intestazioni precompilate? –
@MartinBa Con "incluso solo il minimo necessario di intestazioni" non è un errore, è una buona pratica. Riguardo alla dimensione media dei file: i compilatori devono analizzare tutto, quindi ovviamente c'è un limite di perfomance dato dalla dimensione del file. Suggerirei un sistema di build incrementale in cui vengono ricompilati solo i file modificati. Quindi non devi preoccuparti di lunghi tempi di compilazione. – stefan