En realidad no hay mucho que se pueda hacer más allá de los trucos habituales:
- minimizar dependencias: se descargue sólo las cabeceras de Boost que realmente necesita, y el uso de cabeceras lo más específico posible (muchas bibliotecas tienen un único cabecera "master", como
boost/thread.hpp
, sino también un subdirectorio con cabeceras específicas, como boost/thread/shared_mutex.hpp
),
- cuando sea posible, se basan en las declaraciones hacia adelante en lugar de la inclusión de toda la cabecera,
- si es posible, incluyen la cabecera sólo en una
.cpp
archivo. Si lo incluye en un encabezado, debe compilarse cada vez que se compila una unidad de traducción que incluye ese encabezado. Como regla general, intente minimizar la cantidad de código que tiene en los encabezados,
- , todos los compiladores principales admiten encabezados precompilados. Utilícelos para reducir el tiempo de compilación,
- experimente con unity builds. Eso puede o no ser una ventaja en su caso.
Y por último, pero no menos importante, la última opción es simplemente no usar esas bibliotecas específicas de Boost.
A veces uso ciertas bibliotecas de Boost desde el principio, por conveniencia, y si el tiempo de compilación es demasiado malo, empiezo a buscar qué bibliotecas son caras de compilar y cuáles pueden reemplazarse por un código relativamente simple. A menudo, Boost está estorbado por el requisito de ser tan general. Si no necesita algo que funcione en compiladores de 8 años, o que no tenga que funcionar en muchos tipos diferentes, entonces puede escribir un reemplazo simple que funcione para usted, y no le tome casi tiempo compilar.
Algunas partes de boost son muy útiles. Sin embargo, muchos componentes me parecen demasiado ingeniosos y tienen terribles dependencias de encabezado solo porque se implementan solo en encabezados. Así que terminas recompilando código de refuerzo innecesariamente una y otra vez, mientras que una biblioteca estática o compartida funcionaría muy bien. –
Casi cualquier compilador que sea lo suficientemente moderno para compilar Boost también admite encabezados precompilados. Esas son conceptualmente el equivalente de las bibliotecas estáticas para las bibliotecas de solo encabezado. – MSalters
ver aquí, http://www.boost.org/boost-build2/doc/html/bbv2/reference/precompiled_headers.html – Dilawar