среда, 5 августа 2009 г.

Впечатления от ccache

ccache- это кешируещий препроцессор исходников. Основная идея состоит в том, чтобы выяснить, не собираемся ли мы компилировать тот же самый код снова, и если да, то просто воспользоваться уже сгенерированным кодом и, таким образом, сэкономить кучу времени. Уверяют, что часто компиляция осуществляется в 5-10 раз быстрее. Вот тут написано за счет чего это достигается.

Народ, кто пользуется distcc, очень активно интересовался, а будет ли distcc работать в паре с ccache? Ответ был дан такой: да, но только в простом (не-pump) режиме. Поскольку, pump меня не устраивает, я решил попробовать, а вдруг что-нибудь путное получится из использования ccache?

Развитие ccache остановилось пять лет назад, поэтому последнюю версию можно ставить из репозитариев. Не знаю в чем дело, но на моей машине после этого слетели настройки рендеринга шрифтов, так что осторожнее с этой командой:

$
sudo apt-get install ccache

Update: После переустановки Ubuntu , я сначала поставил все GNOME приложения, ccache, и только после это библиотеки и приложенияKDE. Может быть дело было именно в порядке установки, но теперь со шрифтами все нормально.

Использование ccache простое- вместо просто make надо делать

$ make 'CC=ccache gcc'

Если есть желание подружить его с distcc, то в установке distcc ничего менять не надо, а собирать надо так:

$ make -j40 'CC=
ccache distcc gcc'

Я проверял, как всегда, на vim 7.2. Существенная разница есть между временем компиляции просто make и с использованием ccache:
Make без ccache и distcc- 2 мин 17 сек.
С использованием ccache без distcc- 1 мин 57 сек.
С использованием distcc без ccache, только на сервере- 1 мин 51 сек.
С использованием distcc
без ccache, на localhost и сервере- 1 мин 10 сек.
С использованием ccache и distcc, на localhost и сервере- 1 мин 10 сек.

Отсутствие выиграша по времени в последним случае можно объяснить медленным процессором, который выполняет ccache и даже небольшим размером проекта vim. Но, с учетом проблем со шрифтами, желание работать с ccache отпало.

Существует похожий проект cachecc1, ориентированный только на gcc. Из статистики, приведенной на оффсайте следует, что cachecc1 в целом дает лучшие результаты, чем ccache, иногда превосходя его в разы по времени компиляции. Будем копать.

Комментариев нет:

Отправить комментарий