Un tempo di costruzione di 8 secondi (incrementale) è comune?

4

Il mio progetto attuale impiega 8 secondi per creare un file C ++. È comune? Altri file richiedono 12-15 secondi, ma la maggior parte al momento è di circa 8 secondi. Io uso Visual Studio per dirmi l'ora.

Sono entrato nelle intestazioni e rimosso le cose che non mi servivano e ho usato la dichiarazione anticipata. Mi ha salvato circa 2 secondi per file e un intestazione impiega circa 4 secondi per passare da solo. In quell'intestazione ho bisogno di tutte le sue dichiarazioni e di una versione lite che rimuove le funzioni pubbliche dei metodi privati di cui non ho bisogno.

Dovrei essere contento che siano circa 8 secondi o che sia troppo lungo per compilare un file?

    
posta yannis 13.02.2012 - 16:09
fonte

3 risposte

8

C ++ è un linguaggio molto complicato e, a causa di molti fattori, il compilatore necessita di diversi passaggi per determinare quale sia un determinato simbolo. Il risultato è che i programmi C ++ sono più lenti da compilare rispetto a programmi di complessità comparabile scritti in altre lingue. Ecco un articolo approfondito che tratta l'argomento (è stato scritto da Walter Bright, il creatore di D e l'autore del Compilatori Digital Mars C e C ++). Considerando questo, la tua compilation di 8 secondi sembra ragionevole.

Buone pratiche per aumentare la velocità di compilazione:

  • inoltra la dichiarazione ogni volta che è possibile
  • intestazioni precompilate
  • #pragma once (non standard, ma sia MSVC che GCC lo supportano)
  • modello Pimpl
risposta data 13.02.2012 - 16:29
fonte
3

Se stai usando un compilatore molto vecchio, allora può essere sgradevole - non supportano cose come la compilazione simultanea. Altrimenti, suggerirei che i tuoi file sono modo troppo grandi e devi dividerli. La build incrementale è per file, per quanto ne so. Ho alcuni file nel mio progetto corrente in cui l'intestazione è composta da migliaia di modelli di metamachinery di template (più un gruppo di intestazioni standard) e il contenuto del file sorgente è un modello di espressione magico per creare un tipo così grande, Visual Studio si blocca metà il tempo cercando di compilarlo.

Ma quando ha successo, ci vuole solo un secondo o due.

    
risposta data 13.02.2012 - 16:13
fonte
3

Ho appena fatto un test di otto secondi e ho compilato 46 file in quel lasso di tempo. Molti fattori entrano nel tuo periodo di compilazione. Non è solo il codice stesso, ma la velocità del processore, la velocità del disco rigido, la quantità di RAM, se i file erano in cache o meno, se il tuo codice è su un'unità di rete, che altro è in esecuzione sul tuo computer, ecc.

    
risposta data 13.02.2012 - 16:28
fonte

Leggi altre domande sui tag