2010-01-27 27 views
6

Estoy desarrollando una aplicación en C++ en Windows XP, usando Eclipse como mi IDE y un sistema de compilación basado en Makefile (con herramientas personalizadas para generar los Makefiles). Además, estoy usando LZZ, lo que me permite escribir un solo archivo, que luego se divide en un encabezado y un archivo de implementación. Estoy usando el puerto TDM de GCC 4.¿Cómo puedo perfilar una compilación completa de C++?

¿Qué herramientas o técnicas podría usar para determinar exactamente cuánto tiempo lleva cada parte del proceso de compilación, y por qué es lento?

De particular interés sería:

  • ¿Cuánto tiempo hacen que averiguar para analizar el Makefile, averiguar las dependencias, compruebe las marcas de tiempo, etc.?
  • ¿Cuánto tiempo necesita Eclipse antes y después de la compilación?
  • ¿Cuánto tiempo pasa GCC en el sistema de análisis e impulsa los encabezados?

P.S .: Este es mi proyecto en el hogar, herramientas tan caras están fuera de mi alcance, pero podría ser documentadas aquí de todos modos si son particularmente relevantes.

Respuesta

6

Dado que Make y GCC son muy prolijos sobre lo que están haciendo, una forma muy cruda de obtener una visión general de alto nivel del tiempo invertido es canalizar la salida a través de un script que marca el tiempo de cada línea:

make | perl -MTime::HiRes -pe "printf '%.5f ', Time::HiRes::time()" 

(estoy usando ActivePerl para hacer esto, pero por lo Supongo que Strawberry Perl ahora puede ser la versión Perl recomendada para Windows.)

Reformatee o procese las marcas de tiempo a su gusto.

Para obtener más detalles sobre GCC en particular, use la opción --time-report.

Para saber la cantidad de sobrecarga que agrega Eclipse, use un cronómetro para calcular el tiempo desde Eclipse y desde la línea de comandos.

1

si está utilizando el impulso, lo más probable es que la mayor parte del tiempo se gaste en la creación de instancias de plantillas y la posterior optimización. Se puede decir que GCC reportar el tiempo dedicado, -time-report (opción de UNIX, puede ser que sea algo más en Windows CCG)

y si usted está tratando de acelerar el tiempo de compilación, desactivar la optimización, -O0 (última letra es el número cero, primero la letra es mayúscula o)

1

Trate SparkBuild, un gmake libre/reemplazo nmake que puede generar un registro de generación anotado con información de tiempo exacto para cada puesto de trabajo en la construcción. Puede cargar ese archivo en SparkBuild Insight para obtener una descripción gráfica de dónde va el tiempo.

Consulte this blog para ver un ejemplo de cómo usarlo.

0

Hay una versión de GNU make llamada remake que proporciona información de perfil.

Cuestiones relacionadas