Когда стоит использовать ccache?
Насколько я знаю, ccache ускоряет компиляцию, перехватывая предыдущие компиляции и обнаруживая, когда такая же компиляция выполняется снова. однако makefile делает то же самое. так зачем нам нужен ccache? когда мы используем это? Спасибо!
2 ответа
Помимо сомнительного преимущества ускорения чистых сборок, вызванного поврежденной системой сборки, и простого случайного преимущества наличия общего кэша, существует законное использование ccache даже для изолированной безупречной системы сборки на основе mtime:
Когда вы переходите назад и вперед между ветками (не говоря уже о отдельных каталогах) или перебазируете, так что вы в конечном итоге касаетесь целой пачки файлов, или, если вам не повезло, центральный заголовок (например, define.h), который включен повсюду ваша безупречная система сборки на основе mtime покорно перестроит все. Если вы когда-то в прошлом создавали в основном одно и то же состояние, ccache ускорит это восстановление.
Если ты когда-нибудь бежишь
make clean; make
вы, вероятно, можете извлечь выгоду из ccache. Разработчики часто делают чистую сборку проекта по целому ряду причин, и это отбрасывает всю информацию из ваших предыдущих компиляций. При использовании ccache перекомпиляция происходит намного быстрее.Другой причиной использования ccache является то, что один и тот же кеш используется для сборок в разных каталогах. Если у вас есть несколько версий или ветвей программного обеспечения, хранящихся в разных каталогах, многие из объектных файлов в каталоге сборки, вероятно, могут быть извлечены из кэша, даже если они были скомпилированы для другой версии или ветви.
Третий сценарий - использование ccache для ускорения чистых сборок, выполняемых серверами, или сборок, которые регулярно проверяют возможность сборки кода.
Вы также можете разделить кеш между пользователями, что может быть очень полезно на общих серверах компиляции.