Fuente
Затишна Галера | iOSКомпас 🧭1️⃣5️⃣2️⃣ Завдання 152Як працює Compilation Cache в Xcode?Я...
576 Vistas/Alcance
2026-04-29 10:01
Mensaje №2622
#iOSКомпас 🧭1️⃣5️⃣2️⃣ Завдання 152Як працює Compilation Cache в Xcode?Як то кажуть, доброго дня шановне панство. Продовжуємо розбирати питання для початківців в ios розробці. З вами знову Сергій @badlinkschannel, не забувайте підписатися. Розробники під iOS добре знають: чим серйозніший проєкт, тим довше він збирається. ➖ Додав пару рядків - чекай. ➖ апустив збірку на CI - знову чекай. У нових підходах до збірки зʼявляється механізм, який намагається розірвати це порочне коло - Compilation Cache.🔣 У чому проблема:Щодня в команді відбувається одне й те саме. Кілька розробників працюють у паралельних гілках. CI-сервер перебирає кожен пул-реквест з нуля. Ті самі залежності та внутрішні модулі компілюються знову і знову. Більша частина цієї роботи - зайва.DerivedData не завжди вирішував цю задачу. Це тимчасове сховище, яке при проблемах радять просто видалити. Зручно для локальної відладки, але не дає жодних гарантій повторного використання збірок.🔣 Що пропонує Compilation Cache:Результати компіляції можна зберігати в кеш усвідомлено і з можливістю повторного використання. Ключова ідея: система визначає, чи можна переюзати результат компіляції, виходячи з того, що саме змінилося. Якщо вихідні файли, налаштування компілятора або тулчейн не змінювалися - робота не повторюється, а результат береться з кешу.Особливо помітно це при перемиканні між гілками, коли частини проєкту не перетинаються, і при повторних збірках, якщо кеш уже «прогрітий».🔣 Де різниця буде помітна: ➖ Перемикання гілок. Якщо гілки зачіпають різні частини проєкту, кеш допомагає уникнути перекомпіляції модулів, які не змінювалися.➖ Повторні збірки. Коли артефакти збережені і доступні, частину роботи можна не виконувати повторно.➖ CI з великим потоком пул-реквестів. Якщо налаштувати збереження кешу між запусками, обсяг повторної роботи помітно зменшується.🔣 Чому не всім стане сильно швидше:➖ Компіляція - не єдина стадія збірки. ➖ Обробка асетів, копіювання файлів, скриптові фази (лінтери, генерація коду), лінковка та вбудовування - усе це може залишатися вузьким місцем. Якщо збірка гальмує через них, кеш компіляції не допоможе.#️⃣ Compilation Cache - це логічний розвиток інкрементальної збірки. Він не вирішить усі проблеми продуктивності і не замінить грамотну організацію проєкту, але бʼє точно в болючу точку - повторну компіляцію того, що вже було зібрано.@Zatishna_Galera