📈 Выборочная оптимизация на примере Composer 2.2
Рекомендую январский выпуск Пятиминутки PHP, в котором Пётр разобрался, как разработчики ускорили Composer, и поставил под сомнение их результат.
Однако в этом посте я хочу поговорить не про результат, а про подход. Он называется выборочной оптимизацией: подпрограмму улучшают не целиком, а только для конкретных случаев. Попробую обобщить и формализовать такой метод:
1. Исследуем очередное узкое горлышко в программе.
2. Ищем предпосылку, при которой можно можно провести оптимизацию подпрограммы.
3. Выдвигаем гипотезу о том, что при использовании программы предпосылка выполняется достаточно часто.
4. В случае подтверждения гипотезы, проводим оптимизацию для этой предпосылки.
Здесь важен баланс между стоимостью оптимизации (затраты на внедрение, прирост сложности кода) и профитом от неё (изменение целевых метрик, доля улучшенных сценариев). Иными словами, игра должна стоить свеч.
https://5minphp.ru/episode95/
В декабре 2021 года вышло обновление пакетного менеджера Composer, версия 2.2. Заявлено увеличение производительност в некоторых случаях на 90%. Как это возможно и почему Composer раньше …