C++ no siendo modular (aún), los cuellos de botella de compilación a menudo incluyen problemas; eso es usando incluir demasiados archivos cuando no son necesarios. También es posible que esos incluidos sean necesarios en el momento, pero podrían volverse superfluos con una reingeniería simple.
- para detectar incluye superfluo, se puede comprobar include-what-you-use, el único problema que tendrá es que funciona en la parte superior de Sonido metálico, por lo que tendrá algún tipo de configuración allí.
- de lo contrario, debe revisar su código y, específicamente, los encabezados .
Como la herramienta es autosuficiente y está documentada, permítanme ampliar un poco el proceso de revisión.
- Cualquier encabezado que tenga más de un par
#include
es muy sospechoso.
- Por el contrario, si tiene un archivo fuente repleto de varios tipos y funciones y solo tiene un par incluye, probablemente signifique que uno de los encabezados trae demasiado.
Si tiene problemas para saber qué se requiere, qué no, y cómo quitar los encabezados superfluos, recomiendo una lectura de Pimpls - Beauty Marks You Can Depend On; si no sabes qué es un Pimpl, lee Compilation Firewalls. Sin embargo, aconsejaría cautela, Pimpl tiene un costo de tiempo de ejecución y mantenimiento, así que solo úselo cuando sea realmente necesario. Personalmente, lo recomendaría absolutamente en los encabezados públicos de una biblioteca que entregue a terceros (compatibilidad ABI), y de lo contrario trataré de evitarlo.
Si la inspección manual no es su fuerte, puede generar la salida del preprocesador para cada encabezado (no se preocupe demasiado por los archivos fuente) y compruebe los resultados más grandes.
directamente una respuesta, pero se volvió acumulación paralelo? – dbrank0
El comentario general es no incluir encabezados que no necesita. Lo peor para el tiempo de compilación es un archivo de encabezado llamado includes.hpp que incluye todos los posibles archivos de encabezado que necesita. He visto ese tiempo de re-compilación de bloat. –
¿Qué tal una actualización de hardware? –