Чрезмерное время компиляции с boost :: xpressive на Mac OS 10.6 - PullRequest
2 голосов
/ 06 февраля 2011

мы используем boost :: xpressive для работы с регулярными выражениями в приложении C ++ / ObjC.После обновления до Mac OS 10.6 мы обнаружили, что время компиляции очень велико (1-2 минуты для каждого файла (!) В Dual-Quad MacPro ...), где выражения определяются и компилируются с помощью sregex :: compile ().Кроме того, производительность всей системы замедляется, что приводит к не отвечающим требованиям приложениям;для всех остальных файлов компиляция выполняется должным образом.

Используется компилятор gcc4.2, как на 10.5, так и на 10.6.У вас есть похожий опыт и / или предложения?Есть ли способ предотвратить это с помощью PCHs?

Спасибо и всего наилучшего
Matthias

1 Ответ

2 голосов
/ 06 февраля 2011

Использование шаблонных шаблонов (вот что такое повышение (да, не только это, но и многое из этого)) довольно медленно во многих компиляторах. Это приводит к плохим временам компиляции для Boost.Spirit, Boost.Expressive и других. Известная проблема, обычная тема в списках рассылки Boost.

Вы можете

  • читать документы и надеяться на подсказки (в некоторых Boost Libs такие вещи документированы)
  • возможно, Boost.Regex имеет лучшее время компиляции
  • убедитесь, что вы используете такие вещи только в файлах .cpp - если вы используете эти вещи внутри заголовков, ваше время компиляции будет страдать в "несвязанных" файлах
  • отдельный код Boost.Expressive в отдельный файл .cpp
  • надеюсь, что следующая версия g ++ будет лучше обрабатывать шаблонный код
...