Ответ 1
На самом деле вы не можете многое сделать за пределами обычных трюков:
- минимизировать зависимости: извлекайте только заголовки Boost, которые вам действительно нужны, и используйте как можно более конкретные заголовки (во многих библиотеках есть один "главный" заголовок, например
boost/thread.hpp
, но также и подкаталог с определенными заголовками, напримерboost/thread/shared_mutex.hpp
), - где это возможно, полагаться на форвардные объявления вместо того, чтобы включать весь заголовок,
- если возможно, включите заголовок только в файл
.cpp
. Если вы включите его в заголовок, его нужно скомпилировать каждый раз, когда блок перевода, который включает этот заголовок, скомпилирован. Как общее правило, попытайтесь свести к минимуму количество кода, который у вас есть в заголовках, - все основные компиляторы поддерживают прекомпилированные заголовки. Используйте их, чтобы сократить время компиляции,
- эксперимент с построением единства. Это может быть или не быть преимуществом в вашем случае.
И последнее, но не менее важное: окончательный вариант состоит в том, чтобы не использовать эти конкретные библиотеки Boost.
Я иногда использую некоторые Boost libs на раннем этапе, из-за удобства, и если/когда время компиляции становится слишком плохим, я начинаю искать, какие библиотеки дорого компилировать, а какие из них можно заменить относительно простым кодом. Часто Boost обременен требованием быть таким общим. Если вам не нужно что-то, что работает на 8-летних компиляторах, или которые не должны работать через довольно много разных типов, тогда вы сможете написать простую замену, которая работает для вас, и почти не занимает времени для компиляции.