2011-03-09 18 views
14

Il tempo di compilazione del mio progetto è piuttosto lungo e vorrei ridurlo il più possibile. Comunque, in questo momento sto solo navigando attorno al mio progetto e provo a rimuovere la compilation roba pesante sulla pura intuizione.Compilazione e ottimizzazione della compilazione

Mi piacerebbe essere in grado di profilare la mia raccolta su un livello che mi darà informazioni utili che posso usare per identificare ciò che sta prendendo la maggior parte del mio tempo di compilazione.

Ho provato a abilitare "Build Timing" in Visual Studio, ma questo non mi dà più informazioni rispetto alla tempistica delle diverse attività che il compilatore sta eseguendo, sapendo che la maggior parte del tempo è trascorso in "CL" non è molto utile.

Esiste un modo per compilare profili a un livello inferiore come la sincronizzazione di righe o file?

+1

No. Ha una complessità O (n) fondamentale, riduce n mediante la rotazione del codice in DLL separate. I modelli non sono mai a buon mercato btw. –

+3

Sono consapevole che i modelli non sono economici. Sarebbe tuttavia bello sapere quali istanze di template impiegano tempo, ad es. alcune librerie di boost stanno prendendo l'80% delle volte, nel qual caso potrei considerare di cambiare l'implementazione. – ronag

+1

Ottima domanda, mi piacerebbe avere strumenti di cronometraggio compilati. – Inverse

risposta

1

non ho la compilazione profiling consiglio da offrire. Tuttavia, ecco un paio di consigli per ridurre il tempo di compilazione:

  • Usa dichiarazione anticipata nel file di intestazione, per quanto possibile

    In C++, le classi possono essere forward-dichiarati se avete solo bisogno di usare il tipo puntatore-a-quella-classe (poiché tutti i puntatori oggetto sono la stessa dimensione , e questo è ciò che interessa al compilatore). (fonte: http://en.wikipedia.org/wiki/Forward_declaration)

  • Inoltre, utilizzando il linguaggio Pimpl vi aiuterà molto, consentendo al compilatore di ricompilare solo la parte che hai modificato. http://en.wikipedia.org/wiki/Opaque_pointer

  • Evita il file di inclusione completo che contiene tutto il file di inclusione di una libreria e include solo le intestazioni effettivamente necessarie.

Problemi correlati