2016-10-26 9 views
1

Чтобы ускорить время компиляции ССАГПЗ, у нас есть два варианта:Действительно ли ccache превосходит средства предварительно скомпилированных заголовков gcc?

  • CCache
  • скомпилированные заголовки GCC в

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

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

ответ

4

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

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

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

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