2009-07-10 9 views

risposta

5

"Strumenti" -> "Opzioni" -> "Progetti e soluzioni" -> "Impostazioni VC++ progetto"

Spuntare "build Timing".

+1

Seriamente, è così facile? Mi piace ancora la mia soluzione! :) –

+0

Il tempo di generazione fornisce tempi per i vari processi di compilazione, non per ciascun file. –

0

È passato un po 'di tempo da quando ho usato quella versione del compilatore, ma ricordo che stampa il nome del file che si sta compilando sulla console (quando si usa la configurazione della riga di comando). Se questo è il caso, allora si può scrivere un programma che fa il seguente:

  1. CreateProcess sulla riga di comando del compilatore, reindirizzando stdout ad un tubo
  2. Leggi dal tubo, alla ricerca di nomi di file di origine
  3. ogni volta che un nome del file sorgente è visto, si noti il ​​timestamp corrente
  4. Quando il tubo è chiuso, stampare i tempi impiegati per ogni file costruire

Anche se questo approccio potrebbe essere sviluppato in C++, sarebbe probabilmente sarà più facile usare uno strumento come Perl per implementarlo.

+0

grazie greg questo è un buon approccio ... –

+0

wat su come scrivere uno script Python ?? –

+0

Certo, Python sarebbe ugualmente adatto a questo. –

6

Sto usando Visual Studio 2010 ma altre versioni di Visual Studio potrebbero avere qualcosa di simile. In VS2010 è possibile aggiungere alle opzioni della riga di comando/Bt + che consente di stampare il tempo impiegato per compilare ciascun file. Quindi, in una proprietà di progetto sotto "Proprietà di configurazione" -> "C/C++" -> "riga di comando" -> "Opzioni aggiuntive" aggiungi/Bt +

impostando l'opzione risultati/Bt + in uscita (che viene registrato in il file di registro) le linee come le seguenti:

time(c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\c1.dll)=0.05110s < 25394686804 - 25394831194 > BB [C:\not-important\nlopt-2.4.2\direct\DIRect.c] 

Maggiori informazioni su questa opzione in https://blogs.msdn.microsoft.com/vcblog/2010/04/01/vc-tip-get-detailed-build-throughput-diagnostics-using-msbuild-compiler-and-linker/ che ho trovato grazie a questa risposta https://stackoverflow.com/a/3513043/453436

ci sono molti modi per estrarre le linee di tempo a seconda di ciò strumenti che hai a disposizione. L'ho fatto sotto una shell bash con una combinazione di find, grep e perl. Quanto segue ti darà il tempo di compilazione ordinato per primo.

find . -name '*.log' | xargs grep time | perl -ne '$_ =~ /=(.*?)s.*\[(.*)\]/; print "$1 $2\n";' |sort -rn 
+0

Grazie! Io uso VS2013 e questo mostra effettivamente il tempo di compilazione per file. L'utilizzo dell'opzione "Costruisci tempo" come menzionato in un'altra risposta mostra solo i tempi di compilazione/collegamento per progetto. – opetroch

Problemi correlati