Время компоновки GCC мало выигрывает от предварительно скомпилированных заголовков

У меня огромный проект, что-то около 150 000 LOC кода C ++. Время сборки составляет около 15 минут. Этот проект состоит из множества подпроектов разных размеров.

Я построил отдельные предварительно скомпилированные заголовки для каждого подпроекта, но при их использовании время сборки остается примерно одинаковым. Казалось, что время сборки на 5-10% процентов меньше, а не больше.

Прекомпилированные заголовки, безусловно, используются, я использую-Winvalid-pch вариант, и я попытался скомпилировать с-H опция компилятора, мои предварительно скомпилированные заголовки появляются в выводе с символом «bang», это означает, что компилятор может использовать предварительно скомпилированный заголовок.

Все мои предварительно скомпилированные заголовки не очень большие, каждый файл занимает около 50 МБ. Я использую скрипт Python, нашелВот составить список наиболее часто используемых предварительно скомпилированных заголовков, чтобы мой список кандидатов для предварительной компиляции был достаточно хорошим.

Существуют ли бесплатные / открытые инструменты для оптимизации сборки? Казалось, что стандартmake Утилита не имеет возможности измерять время сборки различных целей. Я не могу найти способ получить статистику для разных целей сmake, Я не говорю об анализе зависимости или о чем-то продвинутом. Я просто хочу знать, на какие цели была потрачена большая часть времени.

Кроме того, казалось, что GCC довольно неэффективен в работе с предварительно скомпилированными заголовками. Мне не удалось получить какую-либо сборку подпроекта, заметно быстрее, максимальное ускорение, которое я получаю, составляет 20% для проекта, который собирается за три минуты. Казалось, что проще и дешевле купить более быструю машину с твердотельным накопителем, чем оптимизировать время сборки под Linux с GCC.

Ответы на вопрос(3)

Ваш ответ на вопрос