Для моих тестов мне нужно скомпилировать несколько тысяч файлов C ++, которые имеют много общего кода. Поскольку не все компиляторы совместимы (или более разрешены), я выполняю все свои тесты с помощью g ++, clang ++ и msv c на windows и linux.
Чтобы улучшить время компиляции, я использую уже предварительно скомпилированные заголовки для общий код. Кроме того, я написал небольшое приложение-препроцессор, чтобы разрешить «единую сборку» (объединить файлы *. cpp в один *. cpp файл).
В настоящее время я получаю следующее время компиляции (случайный тестовый пример) :
- MSV C с PCH: 0,573 секунды
- MSV C без PCH: 5,367 секунды
(примерно 10 раз)
- лязг с PCH: 5,221 сек.
- лязг без PCH: 7,225 сек.
(примерно в 1,4 раза)
- G ++ с PCH: 3,099 секунды
- G ++ без PCH: 5,826 секунды
(примерно 1,9 раза)
К сожалению, мой код содержит множество шаблонов / экземпляров шаблонов, которые кажутся быть "сохраненным" только в Microsoft PCH.
Знаете ли вы, как добиться схожего времени компиляции для g ++ и clang ++? Есть ли у вас какие-либо предложения, как улучшить время компиляции?
Здесь вы можете увидеть трассировку chrome / clang (-ftime-trace и pch): Отслеживание времени Clang с предварительно скомпилированным заголовком