Уменьшающиеся слоны
В статье команда инженеров Block рассказывает о проблеме масштабных монорепозиториев — когда проект разбит на тысячи подпроектов и IDE синхронизирует десятки миллионов строк кода, разработка становится неэффективной. В примере приводят ситуацию, когда «холодная» (cold) синхронизация в IntelliJ с Gradle занимает около 24 минут, и при этом используется порядка 36 ГБ оперативной памяти — очевидно, что для разработчика такое ожидание неприемлемо.
Чтобы решить эту проблему, авторы вводят ряд «интервенций» — изменений поверх обычного Gradle-процесса, направленных на уменьшение объёма работы IDE при синхронизации. Среди них — параллельная загрузка моделей, ограничение числа проектов, которые синхронизируются (Spotlight), отключение транзитивной синхронизации зависимостей (intransitive sync), замена подпроектов на заранее собранные артефакты (artifact swap), предпроскачивание зависимостей (pre-fetch). В совокупности эти меры позволили снизить время синхронизации с нескольких минут до ~15 секунд — улучшение порядка 97% — и значительно снизить нагрузку на ресурсы.
Статья: https://engineering.block.xyz/blog/shrinking-elephants
Платформа: Android
Post #3753
440

- ❤ 1
- 👍 1