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

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Прежде чем перейти к статье, хочу вам представить, экономическую онлайн игру Brave Knights, в которой вы можете играть и зарабатывать. Регистируйтесь, играйте и зарабатывайте!

Прежде чем перейти к статье, приглашаем всех желающих поучаствовать в бесплатном вебинаре «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:

  • PHP 7.4

  • PHP 8.0

  • PHP 8.0 с JIT.

Я решил не включать предварительную загрузку 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 — Что нового?».

Источник: https://habr.com/ru/company/otus/blog/536972/


Интересные статьи

Интересные статьи

Я давно знаком с Битрикс24, ещё дольше с 1С-Битрикс и, конечно же, неоднократно имел дела с интернет-магазинами которые работают на нём. Да, конечно это дорого, долго, местами неуклюже...
В этой статье мы рассмотрим, как система управления 1С-Битрикс справляется с большими нагрузками. Данный вопрос особенно актуален сегодня, когда электронная торговля начинает конкурировать по обороту ...
Прим. перев.: хотя этот обзор не претендует на статус тщательно проработанного технического сравнения существующих решений для постоянного хранения данных в Kubernetes, он может стать...
(c) Практически с появления технологической отрасли в ней велась охота за «Белым китом» — метриками труда разработчиков. Возможно, само желание посчитать KPI программистов родилось из фразы,...
Однажды, в понедельник, мне пришла в голову мысль — "а покопаюсь ка я в новом ядре" (новым относительно, но об этом позже). Мысль не появилась на ровном месте, а предпосылками для нее стали: ...