Ускорьте время компиляции / компоновки при использовании библиотек наддува - PullRequest
12 голосов
/ 17 февраля 2011

Я использую Параметры программы Boost , и это занимает довольно много времени (10 секунд или даже больше) для компиляции очень маленького кода C ++ с ним.Компиляция кода заняла 1 секунду без библиотеки boost.

Есть идеи, как увеличить время компиляции / компоновки с помощью библиотеки boost?Это кроссплатформенный, поэтому мне нужно скомпилировать код с Mac OS X / Linux / PC.

Ответы [ 2 ]

16 голосов
/ 17 февраля 2011

На самом деле вы ничего не можете сделать, кроме обычных уловок:

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

И последний, но не менее важный вариант - просто не использовать эти конкретные библиотеки Boost.

Я иногда используюнекоторые библиотеки Boost на ранних стадиях, из-за удобства, и если / когда время компиляции становится слишком плохим, я начинаю смотреть, какие библиотеки являются дорогостоящими для компиляции, а какие можно заменить на относительно простой код.Часто, Boost обременен требованием быть настолько общим.Если вам не нужно что-то, что работает на 8-летних компиляторах, или которое не должно работать с очень многими различными типами, тогда вы сможете написать простую замену, которая работает для вас, и почти не тратит времяскомпилировать.

1 голос
/ 17 февраля 2011

У меня был хороший успех с идиомой брандмауэра компилятора для сокращения времени компиляции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...