Desde que comencé en una nueva compañía me he dado cuenta de que usan archivos unity cpp para la mayoría de nuestra solución, y me preguntaba si alguien puede darme una razón definitiva sobre por qué y cómo estos aceleran el proceso de compilación. ? Pensé que la edición de un archivo cpp en los archivos de unidad obligará a la compilación de todos ellos.¿Los beneficios/desventajas de las construcciones de unidades?
Respuesta
de preguntas y respuestas buenas muy similar aquí: #include all .cpp files into a single compilation unit?
El resumen parece ser que menos sobrecarga de E/S es el mayor beneficio.
Véase también The Magic Of Unity Builds como se relacionan en la pregunta anterior también.
excelente respuesta, muchas gracias por su ayuda, después de leer esos enlaces todavía no soy más prudente si edito archivos dentro de la unidad cpp forzar una compilación completa de la fuente completa, ¿alguna idea al respecto? – Stowelly
Sí, lo haría. Si eso es algo malo o no depende de la frecuencia con la que debes hacer una reconstrucción completa. –
Si un archivo cambia, cualquier sistema de compilación decente notaría una dependencia modificada y recompilaría el lote. Es posible que pueda mitigar parte de ese tiempo con un caché de compilación como el excelente ccache; consulte http://ccache.samba.org/ – akent
Lee Winder publicado sus experiencias con la Unidad construccion - The Evils of Unity Builds
Su conclusión es:
Unidad construye. No me gustan.
Artículo muy útil. Recientemente me he dado cuenta de que realizar varios cambios en varios proyectos dentro de la solución puede tardar hasta media hora en compilarse (incluso con incredibuild), pero la solución de limpieza y la creación desde cero demoran unos 5 minutos, por lo que es definitivamente muy válido puntos allí! – Stowelly
El enlace ahora se puede encontrar [aquí] (http://engineering-game-dev.com/2009/12/15/the-evils-of-unity-builds/). – imallett
@imallett El enlace está roto también. – glauxosdever
Esto se debe a que ahorra trabajo redundante. Análisis y compilación redundantes para dependencias. La vinculación también es mucho más compleja: tiene sus exportaciones en un solo objeto (o algunas), o son exportaciones redundantes separadas en la mayoría de los archivos objeto del objetivo. Menos objetos producen menos E/S y tiempos de enlace reducidos. Dependiendo de su configuración, la inclusión podría ser un problema: en el sistema de "compilación unitaria" que uso, la compilación es, en última instancia, unida a la CPU y/o la memoria.
- 1. Cómo encadenar las construcciones TFS?
- 2. En Jenkins, ¿cómo saben las construcciones quién los solicitó?
- 3. ¿Cuáles son los pros y contras de las pruebas manuales de unidades en comparación con las pruebas de unidades automatizadas?
- 4. Encontrar instrucciones estáticas de importación para las construcciones de Mockito
- 5. ¿Cómo acelerar las construcciones de xcode sin modificaciones de proyecto?
- 6. ¿Deben localizarse las unidades de medida?
- 7. ¿Cómo funcionan las unidades de medida F #?
- 8. ¿Cómo se representan las unidades de medida?
- 9. ¿Cuáles son las unidades de FB.getAuthResponse(). ExpiresIn?
- 10. Las etiquetas de servidor no pueden contener construcciones <% ... %>
- 11. PHP: ¿Qué son construcciones idiomáticas y por qué las necesitamos?
- 12. Construcciones de cálculo (Mónadas, Flechas, etc.)
- 13. Simulando condiciones de carrera en las pruebas de unidades RSpec
- 14. Obtenga las unidades de disco físicas correspondientes de los puntos de montaje con consultas WMI?
- 15. ¿Por qué las construcciones "fuera de origen" no son las predeterminadas?
- 16. F # construcciones de manejo de excepciones
- 17. Perfil de construcciones paralelas de Maven 3
- 18. Cómo recombinar construcciones en TeamCity?
- 19. ¿Las unidades de medida son exclusivas de F #?
- 20. Construcciones sin bloqueo en .net
- 21. unidades de lienzo html5
- 22. CakePHP/Jenkins/Phing - Ejecuta todas las pruebas de unidades
- 23. Prolog, lista de construcciones con cláusulas condicionales
- 24. ¿Qué idiomas no tienen construcciones de bucle?
- 25. flot: ¿mostrar unidades en los ejes?
- 26. ¿Qué implementación de las unidades jsr-275 se debe utilizar?
- 27. ¿Cuán precisas son las unidades del mundo real de CSS?
- 28. Listado de todas las unidades USB en Linux
- 29. ¿Cuáles son las unidades de distancia en com.vividsolutions.jts.geom.Geometry class?
- 30. Prueba para construcciones internas/intrínsecas
Tenga en cuenta que una construcción unitaria cambia la semántica, ya que hay muchas cosas que dependen de los límites de una unidad de traducción. –