Каждый год мы стараемся тщательно измерять производительность разных версий PHP и HHVM на различных платформах. В этом году мы измерили четыре версии PHP и HHVM на 20 платформах/конфигурациях, включая WordPress, Drupal, Joomla!, Laravel, Symfony и многие другие. Также мы протестировали популярные решения для электронной коммерции вроде WooCommerce, Easy Digital Downloads, Magento and PrestaShop.
Мы всегда рекомендовали пользователям WordPress не пренебрегать преимуществами свежайших поддерживаемых версий PHP. Не только ради безопасности, но и ради повышения производительности. Причём речь идёт не только о WordPress, это по большей части справедливо для всех платформ. И сегодня мы продемонстрируем, как PHP 7.2 одерживает сокрушительную победу!
В этом году результаты бенчмарков очень сильно отличаются от прошлогодних, когда победителем стал HHVM. Нас впечатлило, что PHP 7.2 вырвался в лидеры по скорости работы. Нужно отметить, что применительно к WordPress HHVM больше не поддерживается и будет постепенно сходить со сцены. Мы больше не рекомендуем своим клиентам переходить на HHVM и отмечаем, что его поддержка другими платформами также снизилась.
Это хорошие новости для разработчиков и конечных пользователей, поскольку теперь можно сосредоточиться на PHP и создавать более быстрые сайты и веб-сервисы.
Мы протестировали 20+ платформ/конфигураций с пятью разными движками, и PHP 7.2 завоевал золотую медаль с результатом 14/20!
Бенчмарки PHP и HHVM (2018)
Для каждого теста мы брали последнюю версию каждой платформы и в течение минуты измеряли работу главной страницы с 15 одновременными пользователями. Тестовый стенд:
Машина: 8x Intel® Xeon® CPU, 2,20 ГГц (работала в Google Cloud Platform и исполнялась в изолированном контейнере)
OPCache: для WordPress, Joomla и Drupal мы использовали официальный образ Docker. Для остальных — тот же образ с включённым OPCache и рекомендованными настройками php.ini.
PHP — это гипертекстовый препроцессор. Сегодня это один из самых популярных скриптовых языков в сети. Согласно W3Techs, PHP применяется на 83 % сайтов, использующих языки программирования на стороне сервера.
Что такое HHVM?
Из-за проблем с производительностью PHP команда Facebook разработала HipHop Virtual Machine (HHVM). Это система, использующая JIT-компиляцию (just-in-time) для преобразования PHP-кода в машинный код ради синергии PHP и железа, на котором этот код исполняется.
Протестированные платформы и конфигурации
Мы протестировали 20 платформ/конфигураций. В некоторых случаях из-за отсутствия поддержки конкретной версии PHP пришлось протестировать по несколько версий. Все измерения — количество запросов в секунду. Чем больше значения, тем лучше.
Первой протестированной платформой стал, конечно же, наш любимый WordPress (возможно, мы немного предвзяты, поскольку ежедневно живём этой CMS). По сути, WordPress — ПО с открытым исходным кодом, которое можно использовать для создания прекрасных сайтов, блогов или приложений. Сегодня на WordPress приходится около 29 % всех сайтов в интернете, то есть более четверти.
Для измерения производительности WordPress мы использовали бесплатную тему Twenty Seventeen. Для заполнения взяли фальшивый контент из wptest.io и в течение минуты тестировали главную страницу, которую одновременно просматривают 15 пользователей.
Количество публикаций на странице: 10, сгенерированы wptest.io.
Победил PHP 7.2, он оказался чуть быстрее HHVM. Это важная перемена по сравнению с бенчмарками 2016 года, когда однозначным победителем был HHVM. Кроме того, PHP для WordPress работает гораздо стабильнее. Мы сами сталкивались с многочисленными проблемами при эксплуатации HHVM. А если сравнить PHP 7.2 с PHP 5.6, то разница в производительности оказывается трёхкратной!
WordPress 4.9.4 + WooCommerce 3.3.1
WooCommerce — полностью кастомизируемая open-source платформа на основе WordPress. К тому же это одно из самых популярных решений для электронной коммерции, на нём работает свыше 42 % всех коммерческих сайтов.
Для этого теста мы взяли WordPress с установленным WooCommerce и бесплатной темой Storefront eCommerce.
WordPress 4.9.4 + WooCommerce 3.3.1 HHVM: 69,58 запроса в секунду
WooCommerce с трудом работал с HHVM, а PHP 7.2 победил PHP 7.1 с небольшим преимуществом.
WordPress 4.9.4 + Easy Digital Downloads 2.8.18
Easy Digital Downloads (EDD) создал Пипин Уильямсон (Pippin Williamson). Это бесплатный WordPress-плагин, помогающий авторам и разработчикам продавать цифровые продукты.
Посмотрев, как работает WooCommerce, мы протестировали WordPress с одним лишь установленным Easy Digital Downloads. Использовалась бесплатная тема EDD Starter Theme.
Количество товаров: 6 (товары по умолчанию из самого плагина).
WordPress 4.9.4 + EDD 2.8.18 HHVM: 127,74 запроса в секунду
PHP 7.2 доминирует.
Drupal 8.4.4
Drupal — open-source CMS, заслужившая популярность благодаря модульной системе и сильному сообществу разработчиков. Она появилась в 2000-м и, согласно W3Techs, используется примерно на 2,2 % всех сайтов, занимая 4,4 % рынка CMS.
Мы использовали бесплатную тему Bartik 8.4.4. Отметим, что Drupal 8.4.x несовместима с PHP 7.2 (#2932574), поэтому движок мы не тестировали.
Количество публикаций: 10, сгенерированы модулем Devel.
Поскольку последняя версия Drupal не поддерживает PHP 7.2, победителем стал HHVM. Хотя если посмотреть на улучшения производительности в предыдущих версиях PHP, то можно смело предположить, что 7.2 работал бы ещё быстрее.
Joomla! 3.8.5
Joomla! — бесплатная CMS с открытым исходным кодом для публикации контента. Она впервые вышла в августе 2005-го. Joomla! построена на основе фреймворка для веб-приложений по схеме «модель-представление-контроллер» и, согласно W3Techs, используется на 3,1 % всех сайтов в интернете.
Для тестирования Joomla мы использовали бесплатный шаблон Beez3.
Количество публикаций: 4 (добавленные при установке образцы публикаций по умолчанию)
На примере Joomla мы видим стабильный рост производительности PHP от версии к версии. Но HHVM всё ещё лидирует.
Magento 2 (CE) 2.1.11 + 2.2.2
Magento — популярная open-source платформа, написанная на PHP. Она появилась в марте 2008-го. Согласно W3Techs, Magento работает на 1,2 % всех сайтов.
Для тестирования Magento 2 benchmark мы использовали бесплатную тему Luma. Поскольку PHP 5.6 поддерживался только версией 2.1.11, нам пришлось прогонять бенчмарки на двух версиях Magento. Мы установили её с образцами данных и темой, идущими в комплекте. Для дополнительного тестирования использовали версию 2.2.2. Magento 2 пока не поддерживает PHP 7.2 и последнюю версию HHVM.
Magento 2 (CE) 2.1.11 PHP 5.6: 10,75 запроса в секунду
Magento 2 (CE) 2.1.11 PHP 7.0: 20,87 запроса в секунду
Magento 2 (CE) 2.1.11 PHP 7.1: 29,84 запроса в секунду
Magento 2 (CE) 2.1.11 PHP 7.2: не поддерживается
Magento 2 (CE) 2.1.11 HHVM: не поддерживается
Поскольку Magento 2 не поддерживает PHP 7.2 и последнюю версию HHVM, победителем стал PHP 7.1. Впечатляет рост производительности от версии к версии.
Grav CMS 1.3.10
Grav — простая, но мощная open-source CMS, которой не требуется база данных. Её ещё иногда называют «CMS на основе неструктурированных файлов (flat-file)».
Мы использовали бесплатный пакет Clean Blog. Обратите внимание, Grav CMS больше не совместима с компилятором HHVM, а из сборки Travis удалена среда HHVM.
Количество публикаций: 4 (предустановленные образцы в Clean Blog)
October CMS — бесплатная open-source модульная CMS-платформа с собственным сервером, построенная на базе PHP-фреймворка Laravel. Впервые она вышла в мае 2014-го.
Мы использовали бесплатную тему Clean Blog. October CMS больше не совместима с PHP 5.6 и HHVM. И хотя мы cмогли обмануть инсталлятор, убрав проверку PHP, мастер конфигурирования вылетел с ошибкой 500.
Количество публикаций: 5 с двумя панелями слева (Recent posts и Follow me)
October CMS
Результаты бенчмарков
October CMS 1.0.433 PHP 5.6: не поддерживается
October CMS 1.0.433 PHP 7.0: 43,83 запроса в секунду
October CMS 1.0.433 PHP 7.1: 47,95 запроса в секунду
October CMS 1.0.433 PHP 7.2: 48,87 запроса в секунду
October CMS 1.0.433 HHVM: не поддерживается
Два движка не поддерживаются, однако PHP 7.2 снова победил.
Приятно, что все эти не столь крупные CMS отказываются от поддержки старых версий PHP. Это одно из преимуществ, свойственных не слишком большим продуктам. К сожалению, когда речь заходит о WordPress и прочих платформах с большими долями рынка, прогресс замедляется из-за соображений обратной совместимости.
Laravel 5.4.36 + 5.6
Laravel — очень популярный open-source PHP-фреймворк, использующийся для создания веб-приложений. Он был разработан Тейлором Отвеллом (Taylor Otwell) и выпущен в июне 2011-го.
В этом тестировании мы использовали чистую HTML-тему. Тесты были прогнаны несколько раз, взято среднеарифметическое. Подробности можно найти здесь.
Таблица содержит шесть колонок post_title, post_content, post_author, created_at и updated_at.
Сессии отключены.
Перед бенчмарками выполнены команды composer dump-autoload –classmap-authoritative, php artisan optimize –force, php artisan config:cache, php artisan route:cache.
Laravel 5.4.36
Результаты бенчмарков
Laravel 5.4.36 PHP 5.6: 66,57 запроса в секунду
Laravel 5.4.36 PHP 7.0: 114,55 запроса в секунду
Laravel 5.4.36 PHP 7.1: 113,26 запроса в секунду
Laravel 5.4.36 PHP 7.2: 114,04 запроса в секунду
Laravel 5.4.36 HHVM: 394,31 запроса в секунду
HHVM — несомненный победитель.
Laravel 5.6 несовместим с HHVM и требует PHP 7.1 или выше.
Laravel 5.6
Результаты бенчмарков
Laravel 5.6 PHP 5.6: не поддерживается
Laravel 5.6 PHP 7.0: не поддерживается
Laravel 5.6 PHP 7.1: 411,39 запроса в секунду
Laravel 5.6 PHP 7.2: 442,17 запроса в секунду
Laravel 5.6 HHVM: не поддерживается
Поразительная разница между результатами Laravel 5.6 PHP 7.2 и Laravel 5.4.36! Последние версии PHP явно пошли на пользу Laravel.
Symfony 3.3.6 + 4.0.1
Symfony — это набор многократно используемых PHP-компонентов и PHP-фреймворк для создания веб-приложений, API, микросервисов и веб-сервисов. Он вышел в октябре 2005-го.
Здесь мы использовали Symfony Demo с MySQL (по умолчанию используется SQLite). Тесты проведены несколько раз, взято среднеарифметическое. HHVM выкидывал ошибку 500. Подробности можно почитать здесь.
В основном файле (app.php) отключено кеширование (AppCache).
Symfony 3.3.6
Результаты бенчмарков
Symfony 3.3.6 PHP 5.6: 81,78 запроса в секунду
Symfony 3.3.6 PHP 7.0: 184,15 запроса в секунду
Symfony 3.3.6 PHP 7.1: 187,6 запроса в секунду
Symfony 3.3.6 PHP 7.2: 196,94 запроса в секунду
Symfony 3.3.6 HHVM: не поддерживается
PHP 7.2 снова победил!
Symfony 4.0.1 требуется PHP 7.1 или выше. И снова HHVM выкидывал ошибку 500.
В версии 4.0.1 в основном файле (index.php) не реализован AppCache.
Symfony 4.0.1
Результаты бенчмарков
Symfony 4.0.1 PHP 5.6: не поддерживается
Symfony 4.0.1 PHP 7.0: не поддерживается
Symfony 4.0.1 PHP 7.1: 188,12 запроса в секунду
Symfony 4.0.1 PHP 7.2: 197,17 запроса в секунду
Symfony 4.0.1 HHVM: не поддерживается
PHP 7.2 опять царь горы.
PyroCMS 3.4.14
PyroCMS — open-source расширение для Laravel, ускоряющее создание сайтов и приложений с помощью этого фреймворка.
Мы использовали бесплатную тему Accelerant Theme (идёт по умолчанию в PyroCMS). PyroCMS не работает в HHVM, вероятно, из-за Laravel.
Количество публикаций: 5
Включён режим отладки (APP_DEBUG=true)
PyroCMS
Результаты бенчмарков
PyroCMS 3.4.14 PHP 5.6: не поддерживается
PyroCMS 3.4.14 PHP 7.0: 27,33 запроса в секунду
PyroCMS 3.4.14 PHP 7.1: 27,81 запроса в секунду
PyroCMS 3.4.14 PHP 7.2: 29,28 запроса в секунду
PyroCMS 3.4.14 HHVM: не поддерживается
Результаты близки к PyroCMS, но PHP 7.2 опять был лучшим.
Pagekit 1.0.13
Pagekit — лёгкая модульная open-source CMS, позволяющая создавать прекрасные сайты. Она вышла весной 2016-го.
Мы использовали бесплатную тему One (идёт в Pagekit по умолчанию).
Количество публикаций: 5
Кеш отключён
Тестовый URL: /blog
Pagekit
Результаты бенчмарков
Pagekit 1.0.13 PHP 5.6: 51,7 запроса в секунду
Pagekit 1.0.13 PHP 7.0: 108,61 запроса в секунду
Pagekit 1.0.13 PHP 7.1: 112,3 запроса в секунду
Pagekit 1.0.13 PHP 7.2: 116,18 запроса в секунду
Pagekit 1.0.13 HHVM: 61,16 запроса в секунду
Pagekit с трудом работал с HHVM. PHP 7.2 — безусловный победитель.
Bolt CMS 3.4.8
Bolt — это open-source инструмент управления контентом, который авторы стараются сделать как можно проще. Он построен на основе компонентов Silex и Symfony, использует Twig, а также SQLite, MySQL или PostgreSQL.
Мы использовали бесплатную тему Bolt Base 2016. HHVM не поддерживается (#6921).
Количество публикаций: 5
Тестовый URL: /entries
Сессии включены
Bolt CMS
Результаты бенчмарков
Bolt CMS 3.4.8 PHP 5.6: 33,45 запроса в секунду
Bolt CMS 3.4.8 PHP 7.0: 60,21 запроса в секунду
Bolt CMS 3.4.8 PHP 7.1: 67,96 запроса в секунду
Bolt CMS 3.4.8 PHP 7.2: 72,05 запроса в секунду
Bolt CMS 3.4.8 HHVM: не поддерживается
Хорошо видно, что с каждой новой версией PHP производительность Bolt CMS растёт.
Anchor CMS 0.12.6 (pre-release)
Anchor — очень простая и компактная open-source система для ведения блогов.
Anchor CMS 0.12.6 PHP 5.6: 495,33 запроса в секунду
Anchor CMS 0.12.6 PHP 7.0: 546,02 запроса в секунду
Anchor CMS 0.12.6 PHP 7.1: 565 запросов в секунду
Anchor CMS 0.12.6 PHP 7.2: 561,73 запроса в секунду
Anchor CMS 0.12.6 HHVM: 487,71 запроса в секунду
Результаты PHP 7.1 и PHP 7.2 очень близки, но PHP 7.1 оказался чуть быстрее.
PrestaShop 1.7.2.4
PrestaShop — популярное и очень быстро развивающееся open-source решение для интернет-магазинов. Первая версия вышла в 2008-м, и, согласно W3Techs, PrestaShop используется на 0,6 % всех сайтов.
Prestashop 1.7.2.4 PHP 5.6: 61,96 запроса в секунду
Prestashop 1.7.2.4 PHP 7.0: 108,34 запроса в секунду
Prestashop 1.7.2.4 PHP 7.1: 111,38 запроса в секунду
Prestashop 1.7.2.4 PHP 7.2: 111,48 запроса в секунду
Prestashop 1.7.2.4 HHVM: не поддерживается
Результаты почти одинаковые, но PHP 7.2 на полноздри вырвался вперёд.
Craft CMS 2.6.3011
Craft CMS — продукт для разработчиков, дизайнеров и веб-специалистов, отличающийся гибкостью применения, широкими возможностями и простой использования.
Мы взяли бесплатную тему по умолчанию.
Количество публикаций: 5
Тестовый URL: /index.php?p=news
CraftCMS поставляется с собственным файлом Docker. Мы немножко настроили его ради совместимости с Nginx.
Craft CMS
Результаты бенчмарков
Craft CMS 2.6.3011 PHP 5.6: 131,04 запроса в секунду
Craft CMS 2.6.3011 PHP 7.0: 266,54 запроса в секунду
Craft CMS 2.6.3011 PHP 7.1: 272,14 запроса в секунду
Craft CMS 2.6.3011 PHP 7.2: 280,02 запроса в секунду
Craft CMS 2.6.3011 HHVM: 26,28 запроса в секунду
Craft CMS плохо работает с HHVM. Но зато PHP 7.2 опять на коне!
Fork CMS 5.2.2
Fork — простая open-source CMS, в которой применяются компоненты Symfony. Здесь мы использовали бесплатную тему, идущую по умолчанию, Fork Theme. Fork CMS требуется PHP 7.1 или выше, она не поддерживает HHVM.
Количество публикаций: 2 (идущие по умолчанию данные из ForkCMS)
Тестовый URL: /modules/blog
Fork CMS
Результаты бенчмарков
Fork CMS 5.2.2 PHP 5.6: не поддерживается
Fork CMS 5.2.2 PHP 7.0: не поддерживается
Fork CMS 5.2.2 PHP 7.1: 10,68 запроса в секунду
Fork CMS 5.2.2 PHP 7.2: 12,83 запроса в секунду
Fork CMS 5.2.2 HHVM: не поддерживается
PHP 7.2 превзошёл по производительности PHP 7.1.
Мы в Kinsta перешли на PHP 7.2
Если эти результаты вас не убедили, то мы уж и не знаем, что вас вообще убедит. Просто дружеское напоминание, если вы клиент Kinsta: мы выпустили PHP 7.2 в декабре 2017-го. Если вам нужно увеличить производительность, можете легко перейти на PHP 7.2 одним кликом в панели MyKinsta.
Если вас беспокоит несовместимость со сторонними плагинами (это возможно), то именно для этого нужны площадки для стейджинга. Можете потестировать без риска для вашего production-сайта.
Впечатления от результатов бенчмарков
Как видите, PHP 7.2 по производительности лидирует на всех платформах.
PHP 7.2 оказался самым быстрым движком в 14 из 20 конфигураций. Ещё две конфигурации (Drupal и Magento) пока не поддерживают PHP 7.2, так что результат вполне мог быть 16/20.
Применительно к WordPress PHP 7.2 был самым быстрым во всех тестах (стоковый сайт WordPress, WooCommerce и Easy Digital Downloads).
На примере многих результатов можно отметить рост производительности PHP от версии к версии. Поэтому так важно тестировать свой сайт, плагины и прочее и регулярно обновлять движок. Это пойдёт на пользу вашим посетителям и клиентам!
Если ваш хостинг-провайдер не предлагает новые версии PHP, возможно, пора переезжать.