- PVSM.RU - https://www.pvsm.ru -
Каждый год мы стараемся тщательно измерять производительность разных версий PHP и HHVM на различных платформах. В этом году мы измерили четыре версии PHP и HHVM на 20 платформах/конфигурациях, включая WordPress, Drupal, Joomla!, Laravel, Symfony и многие другие. Также мы протестировали популярные решения для электронной коммерции вроде WooCommerce, Easy Digital Downloads, Magento and PrestaShop.
Мы всегда рекомендовали пользователям WordPress не пренебрегать преимуществами свежайших поддерживаемых версий PHP [1]. Не только ради безопасности, но и ради повышения производительности. Причём речь идёт не только о WordPress, это по большей части справедливо для всех платформ. И сегодня мы продемонстрируем, как PHP 7.2 одерживает сокрушительную победу!
В этом году результаты бенчмарков очень сильно отличаются от прошлогодних, когда победителем стал HHVM. Нас впечатлило, что PHP 7.2 вырвался в лидеры по скорости работы. Нужно отметить, что применительно к WordPress HHVM больше не поддерживается [2] и будет постепенно сходить со сцены. Мы больше не рекомендуем своим клиентам переходить на HHVM и отмечаем, что его поддержка другими платформами также снизилась.
Это хорошие новости для разработчиков и конечных пользователей, поскольку теперь можно сосредоточиться на PHP и создавать более быстрые сайты и веб-сервисы.
Мы протестировали 20+ платформ/конфигураций с пятью разными движками, и PHP 7.2 завоевал золотую медаль с результатом 14/20!
Для каждого теста мы брали последнюю версию каждой платформы и в течение минуты измеряли работу главной страницы с 15 одновременными пользователями. Тестовый стенд:
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=4000
opcache.revalidate_freq=60
opcache.fast_shutdown=1
opcache.enable_cli=1
Тесты выполнял Торик Фирдаус (Thoriq Firdaus [5]), один из разработчиков WordPress и инженер поддержки в Kinsta. Торик участвовал в создании WordPress Core и редактора локализации WordPress для Индонезии [6].
PHP — это гипертекстовый препроцессор. Сегодня это один из самых популярных скриптовых языков в сети. Согласно W3Techs, PHP применяется на 83 % сайтов [7], использующих языки программирования на стороне сервера.
Из-за проблем с производительностью PHP команда Facebook разработала HipHop Virtual Machine (HHVM [8]). Это система, использующая JIT-компиляцию (just-in-time) для преобразования PHP-кода в машинный код ради синергии PHP и железа, на котором этот код исполняется.
Мы протестировали 20 платформ/конфигураций. В некоторых случаях из-за отсутствия поддержки конкретной версии PHP пришлось протестировать по несколько версий. Все измерения — количество запросов в секунду. Чем больше значения, тем лучше.
Первой протестированной платформой стал, конечно же, наш любимый WordPress [26] (возможно, мы немного предвзяты, поскольку ежедневно живём этой CMS). По сути, WordPress — ПО с открытым исходным кодом, которое можно использовать для создания прекрасных сайтов, блогов или приложений. Сегодня на WordPress приходится около 29 % всех сайтов [27] в интернете, то есть более четверти.
Для измерения производительности WordPress мы использовали бесплатную тему Twenty Seventeen [28]. Для заполнения взяли фальшивый контент из wptest.io и в течение минуты тестировали главную страницу, которую одновременно просматривают 15 пользователей.
Образ Docker взят из https://hub.docker.com/_/wordpress/ [29]
WordPress benchmarks
Результаты бенчмарков
Победил PHP 7.2, он оказался чуть быстрее HHVM. Это важная перемена по сравнению с бенчмарками 2016 года, когда однозначным победителем был HHVM. Кроме того, PHP для WordPress работает гораздо стабильнее. Мы сами сталкивались с многочисленными проблемами при эксплуатации HHVM. А если сравнить PHP 7.2 с PHP 5.6, то разница в производительности оказывается трёхкратной!
WooCommerce [30] — полностью кастомизируемая open-source платформа на основе WordPress. К тому же это одно из самых популярных решений для электронной коммерции, на нём работает свыше 42 % всех коммерческих сайтов [31].
Для этого теста мы взяли WordPress с установленным WooCommerce и бесплатной темой Storefront eCommerce [32].
Образ Docker взят из https://hub.docker.com/_/wordpress/ [29]
WordPress + WooCommerce
Результаты бенчмарков
WooCommerce с трудом работал с HHVM, а PHP 7.2 победил PHP 7.1 с небольшим преимуществом.
Easy Digital Downloads [33] (EDD) создал Пипин Уильямсон (Pippin Williamson). Это бесплатный WordPress-плагин, помогающий авторам и разработчикам продавать цифровые продукты.
Посмотрев, как работает WooCommerce, мы протестировали WordPress с одним лишь установленным Easy Digital Downloads. Использовалась бесплатная тема EDD Starter Theme [34].
Образ Docker взят из https://hub.docker.com/_/wordpress/ [29]
WordPress + Easy Digital Downloads
Результаты бенчмарков
PHP 7.2 доминирует.
Drupal [35] — open-source CMS, заслужившая популярность благодаря модульной системе и сильному сообществу разработчиков. Она появилась в 2000-м и, согласно W3Techs, используется примерно на 2,2 % всех сайтов [36], занимая 4,4 % рынка CMS.
Мы использовали бесплатную тему Bartik 8.4.4 [37]. Отметим, что Drupal 8.4.x несовместима с PHP 7.2 (#2932574 [38]), поэтому движок мы не тестировали.
Drupal
Результаты бенчмарков
Поскольку последняя версия Drupal не поддерживает PHP 7.2, победителем стал HHVM. Хотя если посмотреть на улучшения производительности в предыдущих версиях PHP, то можно смело предположить, что 7.2 работал бы ещё быстрее.
Joomla! [41] — бесплатная CMS с открытым исходным кодом для публикации контента. Она впервые вышла в августе 2005-го. Joomla! построена на основе фреймворка для веб-приложений по схеме «модель-представление-контроллер» и, согласно W3Techs, используется на 3,1 % всех сайтов [42] в интернете.
Для тестирования Joomla мы использовали бесплатный шаблон Beez3 [43].
Joomla!
Результаты бенчмарков
На примере Joomla мы видим стабильный рост производительности PHP от версии к версии. Но HHVM всё ещё лидирует.
Magento [45] — популярная open-source платформа, написанная на PHP. Она появилась в марте 2008-го. Согласно W3Techs, Magento работает на 1,2 % всех сайтов [46].
Для тестирования Magento 2 benchmark мы использовали бесплатную тему Luma [47]. Поскольку PHP 5.6 поддерживался только версией 2.1.11, нам пришлось прогонять бенчмарки на двух версиях Magento. Мы установили её с образцами данных и темой, идущими в комплекте. Для дополнительного тестирования использовали версию 2.2.2. Magento 2 пока не поддерживает PHP 7.2 и последнюю версию HHVM.
Magento 2
Результаты бенчмарков
Поскольку Magento 2 не поддерживает PHP 7.2 и последнюю версию HHVM, победителем стал PHP 7.1. Впечатляет рост производительности от версии к версии.
Grav [49] — простая, но мощная open-source CMS, которой не требуется база данных. Её ещё иногда называют «CMS на основе неструктурированных файлов (flat-file)».
Мы использовали бесплатный пакет Clean Blog [50]. Обратите внимание, Grav CMS больше не совместима с компилятором HHVM, а из сборки Travis удалена среда HHVM [51].
Выключено кеширование страниц и файлов https://learn.getgrav.org/advanced/performance-and-caching [52], кеширование Twig работает.
Grav CMS
Результаты бенчмарков
PHP 7.2 снова одержал убедительную победу.
October CMS [53] — бесплатная open-source модульная CMS-платформа с собственным сервером, построенная на базе PHP-фреймворка Laravel. Впервые она вышла в мае 2014-го.
Мы использовали бесплатную тему Clean Blog [54]. October CMS больше не совместима с PHP 5.6 и HHVM. И хотя мы cмогли обмануть инсталлятор, убрав проверку PHP, мастер конфигурирования вылетел с ошибкой 500.
Количество публикаций: 5 с двумя панелями слева (Recent posts и Follow me)
October CMS
Результаты бенчмарков
Два движка не поддерживаются, однако PHP 7.2 снова победил.
Приятно, что все эти не столь крупные CMS отказываются от поддержки старых версий PHP. Это одно из преимуществ, свойственных не слишком большим продуктам. К сожалению, когда речь заходит о WordPress и прочих платформах с большими долями рынка, прогресс замедляется из-за соображений обратной совместимости.
Laravel [55] — очень популярный open-source PHP-фреймворк, использующийся для создания веб-приложений. Он был разработан Тейлором Отвеллом (Taylor Otwell) и выпущен в июне 2011-го.
В этом тестировании мы использовали чистую HTML-тему. Тесты были прогнаны несколько раз, взято среднеарифметическое. Подробности можно найти здесь [56].
posts
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
Результаты бенчмарков
HHVM — несомненный победитель.
Laravel 5.6 несовместим с HHVM и требует PHP 7.1 или выше.
Laravel 5.6
Результаты бенчмарков
Поразительная разница между результатами Laravel 5.6 PHP 7.2 и Laravel 5.4.36! Последние версии PHP явно пошли на пользу Laravel.
Symfony [58] — это набор многократно используемых PHP-компонентов и PHP-фреймворк для создания веб-приложений, API, микросервисов и веб-сервисов. Он вышел в октябре 2005-го.
Здесь мы использовали Symfony Demo [59] с MySQL (по умолчанию используется SQLite). Тесты проведены несколько раз, взято среднеарифметическое. HHVM выкидывал ошибку 500. Подробности можно почитать здесь [56].
В основном файле (app.php) отключено кеширование (AppCache).
Symfony 3.3.6
Результаты бенчмарков
PHP 7.2 снова победил!
Symfony 4.0.1 требуется PHP 7.1 или выше. И снова HHVM выкидывал ошибку 500.
В версии 4.0.1 в основном файле (index.php) не реализован AppCache.
Symfony 4.0.1
Результаты бенчмарков
PHP 7.2 опять царь горы.
PyroCMS [60] — open-source расширение для Laravel, ускоряющее создание сайтов и приложений с помощью этого фреймворка.
Мы использовали бесплатную тему Accelerant Theme [61] (идёт по умолчанию в PyroCMS). PyroCMS не работает в HHVM, вероятно, из-за Laravel.
Включён режим отладки (APP_DEBUG=true)
PyroCMS
Результаты бенчмарков
Результаты близки к PyroCMS, но PHP 7.2 опять был лучшим.
Pagekit [62] — лёгкая модульная open-source CMS, позволяющая создавать прекрасные сайты. Она вышла весной 2016-го.
Мы использовали бесплатную тему One [63] (идёт в Pagekit по умолчанию).
Тестовый URL: /blog
Pagekit
Результаты бенчмарков
Pagekit с трудом работал с HHVM. PHP 7.2 — безусловный победитель.
Bolt [64] — это open-source инструмент управления контентом, который авторы стараются сделать как можно проще. Он построен на основе компонентов Silex и Symfony, использует Twig, а также SQLite, MySQL или PostgreSQL.
Мы использовали бесплатную тему Bolt Base 2016 [65]. HHVM не поддерживается (#6921 [66]).
Сессии включены
Bolt CMS
Результаты бенчмарков
Хорошо видно, что с каждой новой версией PHP производительность Bolt CMS растёт.
Anchor [67] — очень простая и компактная open-source система для ведения блогов.
Мы использовали бесплатную тему Default Theme [68].
Количество публикаций: 5
Anchor CMS
Результаты бенчмарков
Результаты PHP 7.1 и PHP 7.2 очень близки, но PHP 7.1 оказался чуть быстрее.
PrestaShop [69] — популярное и очень быстро развивающееся open-source решение для интернет-магазинов. Первая версия вышла в 2008-м, и, согласно W3Techs, PrestaShop используется на 0,6 % всех сайтов [70].
Мы взяли бесплатную тему Classic Theme [71]. PrestaShop не поддерживает HHVM [72].
Кеширование страниц отключено, умное кеширование включено
PrestaShop
Результаты бенчмарков
Результаты почти одинаковые, но PHP 7.2 на полноздри вырвался вперёд.
Craft CMS [73] — продукт для разработчиков, дизайнеров и веб-специалистов, отличающийся гибкостью применения, широкими возможностями и простой использования.
Мы взяли бесплатную тему по умолчанию.
CraftCMS поставляется с собственным файлом Docker. Мы немножко настроили его ради совместимости с Nginx.
Craft CMS
Результаты бенчмарков
Craft CMS плохо работает с HHVM. Но зато PHP 7.2 опять на коне!
Fork — простая open-source CMS, в которой применяются компоненты Symfony. Здесь мы использовали бесплатную тему, идущую по умолчанию, Fork Theme [74]. Fork CMS требуется PHP 7.1 или выше, она не поддерживает HHVM.
Тестовый URL: /modules/blog
Fork CMS
Результаты бенчмарков
PHP 7.2 превзошёл по производительности PHP 7.1.
Если эти результаты вас не убедили, то мы уж и не знаем, что вас вообще убедит. Просто дружеское напоминание, если вы клиент Kinsta: мы выпустили PHP 7.2 в декабре 2017-го. Если вам нужно увеличить производительность, можете легко перейти на PHP 7.2 одним кликом в панели MyKinsta.
Если вас беспокоит несовместимость со сторонними плагинами (это возможно), то именно для этого нужны площадки для стейджинга. Можете потестировать без риска для вашего production-сайта.
Как видите, PHP 7.2 по производительности лидирует на всех платформах.
Автор: Макс
Источник [76]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/php-2/274839
Ссылки в тексте:
[1] свежайших поддерживаемых версий PHP: https://kinsta.com/blog/php-versions/
[2] HHVM больше не поддерживается: https://make.wordpress.org/core/2017/05/25/hhvm-no-longer-part-of-wordpress-cores-testing-infrastructure/
[3] Google Cloud Platform: https://kinsta.com/blog/google-cloud-hosting/
[4] рекомендованными настройками php.ini: https://secure.php.net/manual/en/opcache.installation.php
[5] Thoriq Firdaus: https://twitter.com/tfirdaus
[6] редактора локализации WordPress для Индонезии: https://translate.wordpress.org/locale/id/default/wp/dev
[7] 83 % сайтов: https://w3techs.com/technologies/details/pl-php/all/all
[8] HHVM: https://hhvm.com/
[9] WordPress 4.9.4: https://kinsta.com/blog/php-7-hhvm-benchmarks/#wordpress-benchmarks
[10] WordPress 4.9.4 + WooCommerce 3.3.1: https://kinsta.com/blog/php-7-hhvm-benchmarks/#wordpress-woocommerce-benchmarks
[11] WordPress 4.94 + Easy Digital Downloads 2.8.18: https://kinsta.com/blog/php-7-hhvm-benchmarks/#wordpress-edd-benchmarks
[12] Drupal 8.4.4: https://kinsta.com/blog/php-7-hhvm-benchmarks/#drupal-benchmarks
[13] Joomla! 3.8.5: https://kinsta.com/blog/php-7-hhvm-benchmarks/#joomla!-benchmarks
[14] Magento 2 (CE) 2.1.11 + 2.2.2: https://kinsta.com/blog/php-7-hhvm-benchmarks/#magento-benchmarks
[15] Grav CMS 1.3.10: https://kinsta.com/blog/php-7-hhvm-benchmarks/#gravcms-benchmarks
[16] October CMS 1.0.433: https://kinsta.com/blog/php-7-hhvm-benchmarks/#octobercms-benchmarks
[17] Laravel 5.4.36 + 5.6: https://kinsta.com/blog/php-7-hhvm-benchmarks/#laravel-benchmarks
[18] Symfony 3.3.6 + 4.0.1: https://kinsta.com/blog/php-7-hhvm-benchmarks/#symfony-benchmarks
[19] PyroCMS 3.4.14: https://kinsta.com/blog/php-7-hhvm-benchmarks/#pyrocms-benchmarks
[20] Pagekit 1.0.13: https://kinsta.com/blog/php-7-hhvm-benchmarks/#pagekit-benchmarks
[21] Bolt CMS 3.4.8: https://kinsta.com/blog/php-7-hhvm-benchmarks/#boltcms-benchmarks
[22] AnchorCMS 0.12.6 (pre-release): https://kinsta.com/blog/php-7-hhvm-benchmarks/#anchorcms-benchmarks
[23] PrestaShop 1.7.2.4: https://kinsta.com/blog/php-7-hhvm-benchmarks/#prestashop-benchmarks
[24] CraftCMS 2.6.3011: https://kinsta.com/blog/php-7-hhvm-benchmarks/#craftcms-benchmarks
[25] ForkCMS 5.2.2: https://kinsta.com/blog/php-7-hhvm-benchmarks/#forkcms-benchmarks
[26] WordPress: https://wordpress.org/
[27] около 29 % всех сайтов: https://kinsta.com/wordpress-market-share/
[28] Twenty Seventeen: https://kinsta.com/blog/twenty-seventeen-theme/
[29] https://hub.docker.com/_/wordpress/: https://hub.docker.com/_/wordpress/
[30] WooCommerce: https://woocommerce.com/
[31] свыше 42 % всех коммерческих сайтов: https://kinsta.com/wordpress-market-share/#woocommerce
[32] Storefront eCommerce: https://woocommerce.com/storefront/
[33] Easy Digital Downloads: https://easydigitaldownloads.com/
[34] EDD Starter Theme: https://easydigitaldownloads.com/downloads/edd-starter-theme/
[35] Drupal: https://www.drupal.org/
[36] 2,2 % всех сайтов: https://w3techs.com/technologies/overview/content_management/all
[37] Bartik 8.4.4: https://github.com/pantheon-systems/drops-8/tree/master/core/themes/bartik
[38] #2932574: https://www.drupal.org/project/drupal/issues/2932574
[39] https://www.drupal.org/node/2598914: https://www.drupal.org/node/2598914
[40] https://hub.docker.com/_/drupal/: https://hub.docker.com/_/drupal/
[41] Joomla!: https://www.joomla.org/
[42] 3,1 % всех сайтов: https://w3techs.com/technologies/details/cm-joomla/all/all
[43] Beez3: http://a4joomla.com/joomla-templates/countryside-free/using-joomla/extensions/templates/beez3.html
[44] https://hub.docker.com/_/joomla/: https://hub.docker.com/_/joomla/
[45] Magento: https://magento.com/
[46] 1,2 % всех сайтов: https://w3techs.com/technologies/details/cm-magento/all/all
[47] Luma: http://magento2-demo.nexcess.net/
[48] http://pubfiles.nexcess.net/magento/ce-packages/: http://pubfiles.nexcess.net/magento/ce-packages/
[49] Grav: https://getgrav.org/
[50] Clean Blog: https://getgrav.org/downloads/skeletons
[51] удалена среда HHVM: https://github.com/getgrav/grav/commit/abccf2278dac637089fb5b20b6386d88905335c5
[53] October CMS: https://octobercms.com/
[54] Clean Blog: https://octobercms.com/theme/responsiv-clean
[55] Laravel: https://laravel.com/
[56] здесь: https://docs.google.com/spreadsheets/d/1aHfpfSPA3MA82-KDGP5jmkGXkDqbbqu5qykYpCqOpIM/edit?usp=sharing
[57] Blade: https://laravel.com/docs/5.0/templates
[58] Symfony: https://symfony.com/
[59] Symfony Demo: https://github.com/symfony/demo
[60] PyroCMS: https://pyrocms.com/
[61] Accelerant Theme: https://github.com/pyrocms/accelerant-theme
[62] Pagekit: https://pagekit.com/
[63] One: https://pagekit.com/marketplace/package/pagekit/theme-one
[64] Bolt: https://bolt.cm/
[65] Bolt Base 2016: https://market.bolt.cm/view/bolt/theme-2016
[66] #6921: https://github.com/bolt/bolt/pull/6921
[67] Anchor: https://anchorcms.com/
[68] Default Theme: https://github.com/anchorcms/anchor-cms/tree/master/themes/default
[69] PrestaShop: https://www.prestashop.com/en
[70] 0,6 % всех сайтов: https://w3techs.com/technologies/details/cm-prestashop/all/all
[71] Classic Theme: https://github.com/PrestaShop/PrestaShop/tree/develop/themes/classic
[72] PrestaShop не поддерживает HHVM: https://www.prestashop.com/forums/topic/579038-hhvm-prestashop/
[73] Craft CMS: https://craftcms.com/
[74] Fork Theme: https://github.com/forkcms/forkcms/tree/master/src/Frontend/Themes/Fork
[75] хостинг-провайдер: https://www.reg.ru/?rlink=reflink-717
[76] Источник: https://habrahabr.ru/post/350686/?utm_source=habrahabr&utm_medium=rss&utm_campaign=350686
Нажмите здесь для печати.