LINUX.ORG.RU

как работает ccache?

 , ,


0

2

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

а то вот не могу хоть с включенным ccache, хоть с отключенным хромиум уже месяца 4 собрать никаким компилятором(gcc 5.4 - gcc 7.2), mariadb, sql-workbench, qtwebengine недавно перестал собираться... ошибки чисто при компиляции .cpp файлов так подозреваю, что во всем виноват ccache

Ответ на: комментарий от deity

та хрен с ними что не собираются, у меня чисто академический интерес локальный как оно работает хоть примерно

но за ссылку спасибо

xperious ★★
() автор топика
Последнее исправление: xperious (всего исправлений: 1)
Ответ на: комментарий от xperious

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

Но это не точно.

deity ★★★★
()

подозреваю, что во всем виноват ccache

Маловероятно, судя по опыту. Могу добавить, что помимо хеша .c-шника также учитываются версия и флаги компилятора. Проблема, скорее всего, в другом. Профиль, USE-ы, версии, оптимизации, логи...

backbone ★★★★★
()
Ответ на: комментарий от anonymous

я тебе по секрету скажу что разницы между ssd\hd\tmpfs практически нет, сборка почти полностью зависит от проца

deity ★★★★
()
Ответ на: комментарий от mersinvald

Есть мысли что им там надо было бы сделать иначе?)

Наряду с sys-apps/preload это самое dev-util/ccache можно часто встретить во всяческих замшелых мануалах. Возможно когда-то от этого и была польза. Однако ныне эта самая польза сомнительна а вот косяков это вызывает гораздо больше а главное в самых неожиданных местах. Так что выбор как и всегда за конечным пользователем.

init_6 ★★★★★
()
Ответ на: комментарий от deity

я тебе по секрету скажу что разницы между ssd\hd\tmpfs практически нет, сборка почти полностью зависит от проца

dev-python/pypy ;) вот ты и потратил.

init_6 ★★★★★
()
Ответ на: комментарий от init_6

от него столько же пользы как и от tmpfs. ну будет прироста на распаковке обработки зависимостей, может быть. Но это питон, какая тут скорость если оно на 1 ядре в 50 потоков будет крутиться?.

deity ★★★★
()
Ответ на: комментарий от mersinvald

Есть мысли что им там надо было бы сделать иначе?)

«Turbo Pascal 4.0, 1987 год. Впервые введена поддержка модулей с раздельной компиляцией.»

Мысли есть - мозгов нет.

iZEN ★★★★★
()
Ответ на: комментарий от deity

Ну хз, я пару лет назад пока на генте был делал замеры. Разница есть, существенная.

На примере binutils:

HDD:   4:01.56 
TMPFS: 3:05.83 

mersinvald ★★★★★
()
Ответ на: комментарий от mersinvald

HDD

2018 шел мимо

     Mon Dec  4 02:36:35 2017 >>> sys-devel/binutils-2.29.1-r1
       merge time: 1 minute and 37 seconds.

для меня узкое место внезапно ext4 а именно удаление файлов - в моем конфиге

deity ★★★★
()
Последнее исправление: deity (всего исправлений: 1)
Ответ на: комментарий от deity

Ну у меня в те годы был Core Quad :)

Независимо от порядка цифр в замерах, видно, что разница есть засчет более быстрого IO

mersinvald ★★★★★
()
Ответ на: комментарий от mersinvald

как тебе IO придаст скорости в компиляции? на распаковке будет разница.

Методику расчетов и я укажу на ошибки в методике и в выводах. Или же скажу что ошибался.

deity ★★★★
()
Ответ на: комментарий от deity

time emerge binutils.

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

mersinvald ★★★★★
()
Ответ на: комментарий от mersinvald

time emerge binutils.

что разница есть засчет более быстрого IO

вопросов больше не имею

факт того что установка пакета с TMPFS быстрее происходит у — mersinvald остается фактом

fixed

deity ★★★★
()
Ответ на: комментарий от anonymous

На больших пакетах, типа Qt, хорошо ускоряет. Даже при компиляции ядра, glibc есть смысл использовать. А на мелких, да, толку нет, особенно если сами скрипты сборки большую часть времени занимают.

rst
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.