Что такое хорошая настройка CPU / PC для ускорения интенсивной компиляции C ++ / шаблонов? - PullRequest
3 голосов
/ 18 марта 2010

В настоящее время у меня есть машина с Opteron 275 (2,2 ГГц), который представляет собой двухъядерный процессор, 4 ГБ оперативной памяти и очень быстрый жесткий диск. Я обнаружил, что при компиляции даже несколько простых проектов, использующих шаблоны C ++ (например, boost и т. Д.), Мое время компиляции может занять довольно много времени (минуты для мелких вещей, гораздо больше для больших проектов). К сожалению, только одно из ядер привязано на 100%, так что я знаю, что это не ввод-вывод, и может показаться, что нет никакого способа воспользоваться преимуществами другого ядра для компиляции C ++?

Ответы [ 3 ]

7 голосов
/ 18 марта 2010

Используете ли вы предварительно скомпилированные заголовки? Как правило, они обеспечивают самое большое ускорение компиляции, которое я получаю с моими проектами на C ++.

Также, в зависимости от вашего компилятора, вы можете включить многопоточную компиляцию. Например, в Visual C ++ это ключ / MP (, подробности см. Здесь ), хотя включение / MP не всегда возможно, в зависимости от того, какие другие параметры командной строки вы используете.

4 голосов
/ 18 марта 2010

Проблемы времени компиляции с шаблонами часто ссылка проблемы, а не компиляция проблемы.

Использование шаблонов внутри ваших файлов .cpp, но уверенность в том, что заголовки на самом деле не содержат шаблон, является хорошим способом исправить это. Это можно сделать, либо объявив класс вперед, либо заключив класс реализации в абстрактный базовый класс, который просто объявляет открытые члены (в основном, Pimpl Idiom).

1 голос
/ 31 марта 2010

Чтобы воспользоваться преимуществами многопоточной компиляции с системами на основе Makefile, взгляните на ключ -j, обычно рекомендуется вызывать

make -j<number of cores + 1>
...