Производительность Composer 2.0 с JIT PHP 8

Автор оригинала: Jani Tarvainen
  • Перевод

Прежде чем перейти к статье, приглашаем всех желающих поучаствовать в бесплатном вебинаре «PHP 8 — Что нового?».


Последние несколько месяцев для PHP разработчиков выдались поистине захватывающими. С релизами Composer 2.0 и PHP 8.0 произошли значительные обновления кодовой базы DXP (Digital Experience Platform) Ibexa и множества других программных проектов, работающих на PHP. В рамках продолжения темы проведения бенчмарков Composer 1.10 и 2.0 и Symfony 5.2 с PHP 7.1 и 8.0, сегодня мы рассмотрим производительность Composer 2.0 на PHP 8.0.

Как и в предыдущих статьях, я проводил бенчмарки на Hetzner CCX11 VPS с 2 выделенными виртуальными ЦП и 8 ГБ ОЗУ. Я протестировал три сценария с использования Composer 2.0.7:

Я решил не включать предварительную загрузку OPcache, потому что небольшое число запусков Composer вряд ли что-нибудь от нее выиграет. Используемые конфигурации OPCache и JIT:

opcache.preload_user=www-data
opcache.memory_consumption=1024
opcache.interned_strings_buffer=256
opcache.max_accelerated_files=30000
opcache.validate_timestamps=0

opcache.enable=1
opcache.enable_cli=1
opcache.file_cache="/tmp/php-file-cache"
opcache.file_cache_only=1
opcache.file_cache_consistency_checks=1

# only when JIT was enabled
#opcache.jit_buffer_size=512mb
#opcache.jit=1225

Контрольный прогон выполняется с установкой Ibexa Experience и включает следующее:

  1. Установить без файла блокировки и очищенных кэшей

  2. Потребовать новый пакет (novactive/ezseobundle)

  3. Установить с файлом блокировки, с очищенными кэшами

  4. Установить с файлом блокировки, с заполненными кэшами

Я запускал этот набор три раза с аналогичными скриптами из предыдущих бенчмарков и выбирал лучшие показатели по каждому из пунктов. Для отчетности я измерял время и использование памяти.

По продолжительности установки особых различий нет. При полном разрешении зависимостей быстрее всего справляется PHP 7.4, а медленнее всего — PHP 8.0 с JIT. При установке с файлом блокировки, но с пустым кэшем самым медленным оказался PHP 8.0 без JIT. Для случаев с заполненным кэшем результаты идентичны — всего за 6 секунд, что является хорошим результатом для интегрированных CI/CD конвейеров.

По использованию памяти показатели еще ближе друг к другу. С полным разрешением зависимостей PHP 8 является наиболее экономным, но немного более расточительным в других сценариях. Различия здесь довольно малы и поэтому не имеют большого значения в реальных сценариях.

Судя по результатам бенчмарков, для Composer нет больших преимуществ от использования PHP 8.0 (с JIT или без него) вместо PHP 7.4. Для более ощутимых улучшений я бы порекомендовал просто перейти с Composer 1 на Composer 2. Особенно учитывая значительное сокращение объема памяти, используемого для разрешения зависимостей.


Узнать подробнее о курсе «PHP-разработчик».

Зарегистрироваться на открытый вебинар «PHP 8 — Что нового?».

OTUS. Онлайн-образование
Цифровые навыки от ведущих экспертов

Комментарии 0

Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

Самое читаемое