Оптимизация производительности PHP с помощью JIT компиляции

Внимание! Все сообщения на форуме проходят модерацию. Ваше сообщение появится после проверки.
С выходом PHP 8.0 разработчики получили возможность использовать JIT (Just-In-Time) компиляцию, которая значительно улучшает производительность приложений. JIT компилятор преобразует байт-код PHP в машинный код во время выполнения, что позволяет избежать интерпретации кода построчно и ускоряет выполнение.

Как работает JIT компилятор?
JIT компилятор анализирует код во время его выполнения и компилирует часто используемые функции в машинный код. Это позволяет PHP выполнять операции быстрее, особенно в вычислительно интенсивных задачах.

Настройка JIT компиляции
Чтобы включить JIT компиляцию, необходимо внести изменения в файл конфигурации php.ini. Основные параметры, которые нужно настроить:
Включение JIT:
Код
opcache.enable=1
opcache.jit=1255
opcache.jit_buffer_size=100M

opcache.jit_buffer_size=100M - параметр определяет размер памяти, выделенной для хранения скомпилированного кода. Рекомендуется устанавливать его в диапазоне от 32M до 256M в зависимости от потребностей приложения.
Правильная настройка opcache.jit_buffer_size может значительно повлиять на производительность вашего приложения, особенно если оно активно использует JIT компиляцию.


opcache.jit - значение которой представляет собой четырехзначное число, где каждая цифра определяет отдельный аспект поведения JIT:
1. Первая цифра (1) — режим триггера:
- 0: отключить JIT.
- 1: включить JIT, компиляция при первом запуске функции.
- 2: включить JIT, компиляция при втором запуске функции.
- 3: включить JIT, компиляция при достижении определенного порога вызовов.
- 4: включить JIT, компиляция при достижении профилировочного порога.
- 5: включить JIT, компиляция при достижении порога профилирования, с компиляцией с отложенными и статическими типами для целых скриптов.
2. Вторая цифра (2) — оптимизация:
- 0: не оптимизировать.
- 1: оптимизация с индексами массивов.
- 2: оптимизация для быстрого старта.
- 3: оптимизация для минимального потребления памяти.
- 4: оптимизация для максимальной производительности.
- 5: оптимизация с типами из профилирования.
3. Третья цифра (5) — регистровое размещение:
- 0: неоптимизированное размещение регистров.
- 1: свободное размещение регистров.
- 2: преимущественное размещение в регистрах с возвратом на стек.
- 3: управляемое регистровое размещение.
- 4: агрессивное регистровое размещение.
- 5: глобальное регистровое размещение (с профилированием).
4. Четвертая цифра (5) — режим отладки:
- 0: без отладки.
- 1: отладка выполнения.
- 2: отладка выделения памяти.
- 3: отладка машинного кода.
- 4: комбинированная отладка выполнения, выделения памяти и кода.
- 5: максимальное логирование, включая промежуточные представления.
Изменения в php 8.4
Теперь JIT это настоящий оптимизирующий компилятор с промежуточным представлением, аналогичный серверному компилятору Java
До PHP 8.4 JIT был отключен по умолчанию, используя значение по умолчанию opcache.jit_buffer_size=0 вместо opcache.jit=disable. Это фактически отключает JIT не потому, что jit=disable, а потому что размер буфера установлен равный 0.

В этом RFC предлагается изменить эти значения по умолчанию на выключенный jit и размер буфера на 64 мегабайт:
Код
opcache.jit=disable
opcache.jit_buffer_size=64m
Форма ответов
 
Текст сообщения*
Перетащите файлы
Ничего не найдено
Файл
 

Стоимость разработки на 1С-Битрикс:

Индивидуальная разработка магазина

от 350 000 руб. от 5-ти недель

Разработка магазина на 1С-Битрикс с нуля. Дизайн, сборка и оптимизация производительности под конкретный проект и требования. Реализация любого функционала без ограничений готовых решений.

Запуск сайта на готовом решении

от 150 000 руб. от 7-ми дней

Вариант для тех, кто не хочет тратить много средств на индивидуальный проект, и не имеет серьезных требований к сайту. Магазин, быстро запускается на базе одного из 200-та готовых решений.

Мобильное приложение

от 400 000 руб. от 5-ти недель

Разработка кроссплатформенного мобильного приложения, которое не уступает нативным решениям как в производительности, так и пользовательском опыте. Публикуется в AppStore, GooglePlay и RuStore

Сайт компании

от 300 000 руб. от 2-х недель

Корпоративный сайт с информационными разделами, каталогом товаров или услуг. Включает формы обратной связи карточек каталога, любое количество статичных и динамичных разделов.

Инфоресурс

от 300 000 руб. от 4-х недель

Информационный ресурс любой сложности. Сайт для СМИ, городской портал или многопользовательская доска объявлений. Внутренние форумы, блоги- по необходимости.

3D‑моделирование, визуализация

от 25 000 руб. от 3-х дней

По вашим фото, чертежам или описанию создадим 3D‑модели и отрендерим набор изображений для каталога товаров: общий вид, крупные планы и технические ракурсы или 360°‑обзор товара.