Как стать автором
Обновить

Как Composer на 70% ускорили

Время на прочтение1 мин
Количество просмотров56K
image
По всей видимости, на наших глазах родился еще один легендарный коммит (осторожно, в комментариях сплошные гифки):

github.com/composer/composer/commit/ac676f47f7bbc619678a29deae097b6b0710b799

При попытке разобраться с проблемой производительности Композера поступило предположение, что причина проблемы кроется в сборщике мусора:

Это действительно может быть проблемой по части GC. Если создается много объектов, и все они не могут быть «удалены», то GC в PHP начинает сходить с ума — он постоянно пытается провести сборку мусора, но убирать-то нечего — поэтому он просто тратит лишнее время/такты процессора. На это указывает и то, что проблема выявляется только на больших проектах (= много объектов), но не так заметна на маленьких (= GC включается не так часто).

В некоторых случаях, отключение GC сделает выполнение гораздо быстрее (правда, ценой потребления большего количества памяти). Если еще никто не попробовал, то стоит добавить gc_disable() к команде update/install.

github.com/composer/composer/pull/3482#issuecomment-65131942

Результаты, кстати, оказались более чем обнадеживающими:

Before: Memory usage: 135.4MB (peak: 527.71MB), time: 119.82s
After: Memory usage: 134.89MB (peak: 391.28MB), time: 11.26s

Before: Memory usage: 163.66MB (peak: 403.82MB), time: 246.25s
After: Memory usage: 163.34MB (peak: 350.36MB), time: 99.55s
Теги:
Хабы:
Всего голосов 100: ↑94 и ↓6+88
Комментарии67

Публикации

Истории

Работа

PHP программист
71 вакансия

Ближайшие события

19 марта – 28 апреля
Экспедиция «Рэйдикс»
Нижний НовгородЕкатеринбургНовосибирскВладивостокИжевскКазаньТюменьУфаИркутскЧелябинскСамараХабаровскКрасноярскОмск
22 апреля
VK Видео Meetup 2025
МоскваОнлайн
23 апреля
Meetup DevOps 43Tech
Санкт-ПетербургОнлайн
24 апреля
VK Go Meetup 2025
Санкт-ПетербургОнлайн
25 – 26 апреля
IT-конференция Merge Tatarstan 2025
Казань
14 мая
LinkMeetup
Москва
5 июня
Конференция TechRec AI&HR 2025
МоскваОнлайн
20 – 22 июня
Летняя айти-тусовка Summer Merge
Ульяновская область