PHP 7.4 vs. PHP 8.0a
Резюме — в моём частном случае стало ощутимо быстрее, PHP 7.4 работал 63,9 секунд, 8.0a — 42,6.
Как многие знают, основной фишкой восьмой версии интерпретатора ПХП будет JIT. Обещают ускорение вычислительных задач, что немного не про веб, где в основном используется этот язык, но всё равно выглядит интересно.
В официальном репозитории альфа восьмой версии лежит уже давно, стало интересно сравнить её с «семёркой» — много ли даёт JIT приросту. Для подобных тестов я давно использую свой оптимизирующий транслятор «Брейнфака», с загруженной в него задачей вычисления числа Пи.
Восьмой ПХП собрался на моём «Макбуке» следующей последовательностью команд:
PATH=/usr/local/Cellar/bison/3.5.3/bin/:$PATH ./buildconf
./configure --prefix=/opt/php-bin/ --without-iconv --disable-xml \
--without-libxml --disable-simplexml --disable-xmlwriter --disable-dom --disable-xmlreader
make -j4
make install
Версию 7.4 ставил через «брю», сборочную конфигурацию оставил как есть, ничего не менял.
После небольшой коррекции php.ini в информации об интерпретаторе появились OPcache и JIT:
Вообще свой брейфаковский транслятор когда-то давно я умудрился сломать, но с быстрым фиксом он выплюнул некую калечную программу, которая, тем не менее, выдала результат, похожий на правду и довольно бодро нагрузила одно ядро процессора.
Каждую версию интерпретатора я тестировал со включенным и выключенным OPcache десять раз, а результаты усреднил. Как видите, JIT существенно ускорил выполнение программы в моём случае (там огромное количество циклов и ветвлений) — 63,9 секунды против 42,6.
Что интересно — PHP 8.a без OPcache обогнал версию 7.4 со включенным opcache, это примечательный результат— значит сам «голый» интерпретатор тоже оптимизируют.
Кажется ведь OpCache вообще для JIT противопоказан?
Почему? В чём причина?
JIT является частью расширения опкеша. Шах и мат, аметисты)
На мое железе php8/cli ускорился на 45% Макс(простые вычислительные задачи и при работе с циклами). Однако, как бы я не настраивал jit, скорость с ним и без него варьировалась от 1-5%. Особой выгоды не увидел. Возможно jit себя проявит в крупных проектах, где много зависимостей. А на текущей момент, лично у меня, сложилось впечатление, что Jit серой. И вообще, хотелось бы, что разработчики посмотрели в сторону graalvm