2009-02-17 24 views
6

Tengo un código C++ que estoy compilando utilizando VC7 y está tardando mucho tiempo en compilarlo. ¿Hay alguna forma de que yo pueda perfilarlo y encontrar por qué se está tomando tiempo construirlo?Tiempo de compilación de perfiles

Respuesta

9

En Visual Studio 2008, hay una configuración para activar el tiempo de compilación. Podría estar allí en VC7 así ...

Tools/Options/Projects and Solutions/VC++ Project Settings/Build Timing:Yes

Esto se aplica a proyectos de C++, el cual (a partir de VS2008) no utilizan MSBuild. Para proyectos basados ​​en MSBuild (como C#), desea aumentar el nivel de detalle:

Tools/Options/Projects and Solutions/Build and Run/MSBuild project build output verbosity

Por defecto, se configura en "Mínimo".

3

¿El código fuente está en una red? Esto a veces retrasa mucho la compilación.

+0

Sí, y está bajo el control de fuente clearcase. – Naveen

+0

Use una vista de instantánea local para compilar. –

+0

Nunca use una vista dinámica para el código fuente. es mucho más problemático que su valor. – shoosh

-1
+0

Desafortunadamente, las plantillas solo se instancian mediante unidades de traducción completas, no en encabezados precompilados. Cuando traté de usar encabezados precompilados para mi proyecto de plantilla pesada, solo mejoraron el tiempo de compilación en un 0-5% (¡con las optimizaciones activadas o desactivadas!). Si C++ 17 nos trae módulos, podrían ayudar ... – idupree

1

Mi conjetura es que sería difícil conseguir resultados útiles a partir de perfiles. Podrías mirar los tiempos de creación de cada archivo .obj y verificar si hay algún archivo que sea particularmente lento, pero dudo que este sea el caso.

¿Ha revisado las opciones del compilador, como los encabezados precompilados, para ver qué mejoras proporciona? Del mismo modo, apagar el optimizador donde no se requiere puede acelerar la acumulación de manera significativa. Mi consejo sería tomarse un tiempo para probar algunas situaciones hipotéticas.

4

Si el código requiere mucha plantilla, puede intentar crear perfiles de instanciación de plantilla. A Steven Watanabe se le ocurrió el profiler y si no recuerdo mal se suponía que funcionaba con VS (no sé la versión).

+0

+1, las plantillas pueden golpear mal el tiempo de compilación, incluso con los encabezados precompilados –

1

Si su código hace un uso extenso de la plantilla, puede interesarle Templight, una herramienta desarrollada por un equipo de investigación húngaro para depurar y crear perfiles de metaprogramas de plantillas C++ (paper). Parece muy prometedor, pero no estoy seguro de que la herramienta esté disponible para descargar ...

+1

Templight está en camino de convertirse en función integrada en clang. La versión actual y la herramienta de visualización se pueden encontrar aquí: http://plc.inf.elte.hu/templight/ – jmihalicza

Cuestiones relacionadas