2009-07-29 8 views
5

Una aplicación heredada en la que estoy trabajando actualmente toma ~ 2 horas para compilar. El proyecto tiene alrededor de 170 proyectos, de los cuales 150 son C++ no administrados y los otros 30 C# .Net 2.0.¿Maneras de acelerar el tiempo de construcción? (C#/Unmanaged C++)

¿Cuáles son algunas sugerencias sobre cómo mejorar los tiempos de compilación para algo como esto?

+1

se han realizado preguntas similares anteriormente. Haz una búsqueda de "incredibuild" para encontrar un número de ellos. – crashmstr

+0

¿Necesita construirlo desde cero con frecuencia o las compilaciones incrementales son lentas? –

+0

Estamos obligados a construir desde cero con bastante frecuencia. Cada vez que se realiza un cambio para ser QC, se requiere una compilación completa. – Kyle

Respuesta

8

Centrarse en los proyectos de C++ - que están casi garantizados para ser el más grande de tiempo para desagües del edificio.

Algunos consejos sobre cómo obtener el C++ los tiempos de construcción abajo:

  • Asegúrese de que sólo estás incluyendo los encabezados que necesita en los proyectos de C++!
  • Use declaraciones adelantadas siempre que sea posible en los encabezados en lugar de incluir otras cabeceras
  • Use/MP cambiar a construir en paralelo, cuando sea posible
  • Uso abstracción efectivamente
  • Sé parco en el uso de las funciones en línea, ya que estos costará más en tiempo de compilación
  • Recibe las dependencias correcta, por lo que no está construyendo más a menudo que el requerido
  • Use encabezados precompilados apropiadamente

Aparte de eso, si estamos hablando de 2 veces horas de construcción, a menudo no es una solución simple, barato (en una gran forma la imagen), así:

  • actualizar el hardware para ayudar a reducir los tiempos de cálculo
+0

100% de acuerdo. ¿Qué compilador usas? Compruebe los sistemas de almacenamiento en caché del compilador adecuados (p.ccash para gcc) SSD para el servidor de compilación valdría la pena mirar –

+0

Principalmente uso MSVC, pero la mayoría de los argumentos anteriores son estrategias de compilación de C++ de propósito general. Sin embargo, la pregunta probablemente fue específica de MSVC, ya que estaba mezclando C++ y C#. –

2

Usted puede probar el sistema de generación distribuida Incredibuild: http://www.xoreax.com/visual_studio.htm

+0

¿Esto funciona para vincular también? Algunos de mis molestos tiempos de compilación se deben a enlaces. –

0

hacer múltiples soluciones para el proyecto que sólo incluyen subconjuntos pertinentes de los proyectos y dejan una solución estupenda para lanzamientos etc.

4

Si instala IncrediBuild en cada equipo que necesita para construir distribuye entre el proceso de construcción todas las máquinas Si realmente quiere lanzar hardware al problema, puede configurar algunas máquinas dedicadas que solo sirven como clientes de IncrediBuild.

En una escala diferente, asegúrese de que todos los proyectos tengan encabezados precompilados configurados correctamente.

2

Puede usar una herramienta como lint para ver si tiene archivos de inclusión redundantes en sus proyectos de C++.

También hay un excelente artículo sobre este tema en Games from Within.

+0

Hmm esto se ve bastante interesante. Gracias. – Kyle

Cuestiones relacionadas