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
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".
¿El código fuente está en una red? Esto a veces retrasa mucho la compilación.
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
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.
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).
+1, las plantillas pueden golpear mal el tiempo de compilación, incluso con los encabezados precompilados –
Puede probar si es posible en su caso el truco de #include all .cpp files into a single compilation unit, solo con el propósito de comprobar si tiene mucha sobrecarga de muchos archivos y muchos incluyen.
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 ...
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
- 1. Linux muestra el tiempo de perfiles
- 2. Usar perfiles maven para controlar la ejecución de compilación
- 3. Creación de perfiles Tiempo de inicio de Vim
- 4. Obtener tiempo de compilación JAR
- 5. offsetof en tiempo de compilación
- 6. C++ Tiempo de compilación manipulación
- 7. Constantes de tiempo de compilación flexible - Marca de tiempo
- 8. tiempo de lanzamiento muy lento con XULRunner causada por perfiles
- 9. Estructura de árbol de tiempo de compilación
- 10. ¿perfiles maven o perfiles de resorte?
- 11. operador sizeof en tiempo de compilación o tiempo de ejecución
- 12. Crear plantillas T4 en tiempo de ejecución (tiempo de compilación)?
- 13. Constantes de matriz en tiempo de compilación
- 14. Reflejo de tiempo de compilación en C#
- 15. tiempo de compilación: definición múltiple de 'principal'
- 16. hashing de cadena en tiempo de compilación
- 17. Constantes y variables de tiempo de compilación
- 18. Tipo de especialización en tiempo de compilación
- 19. Recopilación de tiempo de compilación y condicionales
- 20. Qt Error de tiempo de compilación. .
- 21. Grails BuildConfig.groovy, ¿diferencia entre compilación, compilación y tiempo de ejecución?
- 22. Terminología Java: ¿Por qué error en tiempo de compilación y no excepción en tiempo de compilación?
- 23. HashMap perfiles
- 24. GCC optimización en tiempo flotante en tiempo de compilación
- 25. tiempo de compilación en C trigonometría
- 26. dos tipos en tiempo de compilación
- 27. Generar números únicos en tiempo de compilación
- 28. ¿Cómo probar UIViewControllers en tiempo de compilación?
- 29. ¿Los comentarios afectan el tiempo de compilación?
- 30. Valores enteros en tiempo de compilación
Sí, y está bajo el control de fuente clearcase. – Naveen
Use una vista de instantánea local para compilar. –
Nunca use una vista dinámica para el código fuente. es mucho más problemático que su valor. – shoosh