Estamos obteniendo tiempos de compilación muy lentos, que pueden tomar más de 20 minutos en máquinas de doble núcleo de 2GHz y 2G Ram.
Mucho de esto se debe al tamaño de nuestra solución, que ha crecido a más de 70 proyectos, así como a VSS, que es un cuello de botella en sí mismo cuando tiene muchos archivos. (desafortunadamente, cambiar VSS no es una opción, así que no quiero que esto descienda a una fiesta VSS)
Estamos buscando proyectos de fusión. También estamos buscando tener múltiples soluciones para lograr una mayor separación de preocupaciones y tiempos de compilación más rápidos para cada elemento de la aplicación. Esto que puedo ver se convertirá en un infierno de DLL a medida que intentamos mantener las cosas sincronizadas.
Estoy interesado en saber cómo otros equipos han lidiado con este problema de escalado, qué haces cuando tu base de código alcanza una masa crítica que estás perdiendo la mitad del día viendo la barra de estado entregar mensajes de compilación.
ACTUALIZACIÓN Olvidé mencionar que esta es una solución de C #. Gracias por todas las sugerencias de C ++, pero han pasado algunos años desde que tuve que preocuparme por los encabezados.
EDITAR:
Buenas sugerencias que han ayudado hasta ahora (sin decir que no hay otras sugerencias agradables a continuación, solo lo que ha ayudado)
- Nueva computadora portátil de 3GHz: el poder de la utilización perdida hace maravillas cuando se maneja a la gerencia
- Deshabilitar antivirus durante la compilación
- 'Desconectarse' de VSS (en realidad la red) durante la compilación: puedo hacer que eliminemos la integración de VS-VSS por completo y que nos quedemos con el uso de la interfaz de usuario de VSS
Todavía no resoplando a través de una compilación, pero todo ayuda.
Orión mencionó en un comentario que los genéricos también pueden tener una obra de teatro. Según mis pruebas, parece haber un impacto mínimo en el rendimiento, pero no lo suficientemente alto como para garantizarlo: los tiempos de compilación pueden ser inconsistentes debido a la actividad del disco. Debido a limitaciones de tiempo, mis pruebas no incluyeron tantos Generics, o tanto código, como aparecería en el sistema en vivo, por lo que pueden acumularse. No evitaría usar genéricos donde se supone que deben usarse, solo para el rendimiento en tiempo de compilación
SOLUCIÓN ALTERNA
Estamos probando la práctica de construir nuevas áreas de la aplicación en nuevas soluciones, importando en los últimos dlls según sea necesario, integrándolos en la solución más grande cuando estamos contentos con ellos.
También podemos hacer lo mismo con el código existente mediante la creación de soluciones temporales que simplemente encapsulan las áreas en las que necesitamos trabajar y las desechamos después de reintegrar el código. Necesitamos sopesar el tiempo que llevará reintegrar este código contra el tiempo que ganamos al no tener Rip Van Winkle como experiencias de recompilación rápida durante el desarrollo.