Есть ли способ сделать время компиляции G ++ / clang ++ таким же быстрым, как MSV C? - PullRequest
2 голосов
/ 04 августа 2020

Для моих тестов мне нужно скомпилировать несколько тысяч файлов 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 с предварительно скомпилированным заголовком

1 Ответ

0 голосов
/ 10 августа 2020

Я вижу, по крайней мере, в текущем стволе clang, что есть заметный прогресс в улучшении времени компиляции в сочетании с шаблонами и предварительно скомпилированными заголовками / модулями.

Возможно, g cc реализует нечто подобное - мы увидим . Но спасибо за комментарии.

...