Полностью ли превосходит ccache средства скомпилированных заголовков gcc?

Чтобы ускорить время компиляции gcc, у нас есть два варианта:

  • CCache
  • предварительно скомпилированные заголовки gcc

Однако я не знаю, что лучше при каких обстоятельствах.

Я погуглил этот вопрос, и у меня возникло смутное впечатление, что ccache полностью превосходит другие. Это правильно?

1

Решение

Предварительно скомпилированные заголовки и ccache предназначены для совершенно разных вариантов использования. ccache может использоваться вместе с предварительно скомпилированными заголовками, они не являются взаимоисключающими.

ccache кэширует весь данный исходный файл, заголовки и все, кэшируя скомпилированный объектный модуль. Технически, ccache берет весь предварительно обработанный модуль перевода исходного кода, хэширует его и кэширует полученный объектный модуль.

Предварительно скомпилированные заголовки обеспечивают небольшую экономию времени, когда одинаковые заголовочные файлы #included неоднократно из разных источников перевода. Но если один и тот же исходный код неоднократно компилируется, прекомпилированные заголовки не помогают (кроме единственного преимущества использования предварительно скомпилированного заголовка). Вот тут-то и появляется ccache, когда ccache спокойно пропускает весь этап компиляции и просто извлекает ранее скомпилированный объектный модуль из кэша.

Таким образом, не имеет смысла сравнивать, какой подход лучше, ccache или предварительно скомпилированные заголовки. Они решают две разные проблемы.

4

Другие решения

Других решений пока нет …