2009-07-10 8 views

Respuesta

5

"Herramientas" -> "Opciones" -> "Proyectos y Soluciones" -> "Configuración de VC++ Project"

Tick "construir" Timing.

+1

En serio, así de fácil? ¡Todavía me gusta mi solución! :) –

+0

Build Timing da tiempos para los diversos procesos de compilación, no para cada archivo. –

0

Ha pasado un tiempo desde que utilicé esa versión del compilador, pero recuerdo que imprime el nombre del archivo que está compilando en la consola (cuando usa la compilación de la línea de comandos). Si ese es el caso, entonces se puede escribir un programa que hace lo siguiente:

  1. CreateProcess en el compilador de línea de comandos, redirigir la salida estándar a un tubo
  2. leída de la tubería, en busca de nombres de archivos fuente
  3. cada vez que se ve un nombre de archivo de origen, tenga en cuenta la fecha y hora actual
  4. Cuando el tubo está cerrado, a imprimir los tiempos tomados para cada archivo construir

Si bien este enfoque podría ser desarrollado en C++, lo haría probablemente sea más fácil usar una herramienta como Perl para implementarla.

+0

gracias Greg es un buen enfoque ... –

+0

wat sobre escribir un guión de Python ?? –

+0

Claro, Python sería igualmente adecuado para esto. –

6

Estoy usando Visual Studio 2010 pero otras versiones de Visual Studio pueden tener algo similar. En VS2010 puede agregar a las opciones de línea de comandos/Bt + que imprime el tiempo necesario para compilar cada archivo. Por lo tanto, en las propiedades de un proyecto en "Propiedades de configuración" -> "C/C++" -> "Línea de comando" -> "Opciones adicionales" agregar/Bt +

Establecer la opción/Bt + resulta en la salida (que se graba en las líneas del archivo de registro) como las siguientes:

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] 

Más información sobre esta opción en https://blogs.msdn.microsoft.com/vcblog/2010/04/01/vc-tip-get-detailed-build-throughput-diagnostics-using-msbuild-compiler-and-linker/ que encontré gracias a esta respuesta https://stackoverflow.com/a/3513043/453436

Hay un montón de maneras de extraer las líneas de tiempo en función de lo herramientas que tienes disponibles para ti. Lo hice bajo un shell bash con una combinación de find, grep y perl. Lo siguiente le dará el tiempo de compilación ordenado con el más largo primero.

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

¡Gracias! Yo uso VS2013 y esto de hecho muestra el tiempo de compilación por archivo. El uso de la opción "Crear tiempo" como se menciona en otra respuesta solo muestra los tiempos de compilación/enlace por proyecto. – opetroch

Cuestiones relacionadas