- PVSM.RU - https://www.pvsm.ru -

Сравнение производительности PHP 7.0 и HHVM

Сравнение производительности PHP 7.0 и HHVM - 1

В течение довольно продолжительного времени о нём не было никаких новостей, но, после долгого ожидания, PHP 7 наконец-то вышел 3 декабря 2015 года. Мы решили протестировать самые популярные CMS, основанные на PHP, чтобы проверить как они работают с PHP 7.

Это великий день для всех, кто регулярно использует PHP — для разработчиков, хостинговых компаний, и даже для конечных пользователей. Выход новой версии даст мощный импульс развитию этого популярного языка веб-разработки. И в конечном итоге это выльется в более быструю работу веб-сайтов и веб-сервисов.

Мы уделяем очень много внимания оптимизации времени загрузки веб-сайтов, и выпустили ряд руководств на тему, например: A Beginner’s Guide to Website Speed Optimization [1], Best Free Website Performance Testing Tools [2] и другие [3].

Для оценки производительности нового интерпретатора PHP мы прогнали через несколько бенчмарков ряд популярных продуктов, использующих PHP 5.6.16, PHP 7.0 и HHVM 3.10.1. Тесты проводились на «голом железе», чтобы виртуализация не повлияла на конечный результат. В сравнении участвовали:

  • WordPress 4.3.1,
  • Drupal 8,
  • Magento 2.0 CE,
  • OctoberCMS build 309,
  • PyroCMS v3 beta2,
  • Flarum v0.1.0-beta.4.

Забегая вперёд, скажем, что HHVM победил. В нашем проекте мы не будем отказываться от политики «HHVM-прежде-всего». Так как мы ориентируемся на сайты с большим трафиком, то для нас первостепенное значение имеют лучшие технологии из всех доступных, и это явно не PHP 7. Тем не менее, мы будем предлагать новую версию в качестве резервного решения, и поэтапно полностью перейдём на него с PHP 5.6 в ближайшие недели.

Конфигурация сервера, которая использовалась для бенчмарков:

  • Intel Xeon E5-2630v3 (8 процессорных ядер и 16 потоков),
  • 64 Гб оперативной памяти,
  • 2 х 4 Тб SAS 7200 об/мин HGST диски в RAID 0.

Также мы использовали MariaDB 10.1.9 для MySQL сервера и Nginx 1.9.7 для веб-сервера.

WordPress 4.4

В качестве тестового сайта была выбрана главная страница свежеустановленного wptest.io. В течение минуты эту страницу одновременно нагружали 15 пользователей. Для WordPress это был единственный тест, где мы могли бы использовать HHVM’s Repo Authoritative mode [4] без трудоемкого модифицирования программного обеспечения. Это могло бы увеличить производительность, но далеко не каждый будет этим заниматься.

Сравнение производительности PHP 7.0 и HHVM - 2

  • WordPress 4.4 HHVM RepoAuthoritative результат: 358,33 оп./сек.
  • WordPress 4.4 HHVM результат: 335,13 оп/сек
  • WordPress 4.4 PHP 7.0 результат: 287,92 оп/сек
  • WordPress 4.4 PHP 7.0 без OPcache результат: 84,87 оп/сек.

WordPress 4.3.1

Здесь 15 пользователей снова в течение минуты одновременно нагружали главную страницу wptest.io.

Сравнение производительности PHP 7.0 и HHVM - 3

  • WordPress 4.3.1 HHVM RepoAuthoritative результат: 375,48 оп/сек
  • WordPress 4.3.1 HHVM результат: 357,69 оп/сек
  • WordPress 4.3.1 PHP 7.0 результат: 306,24 оп/сек
  • WordPress 4.3.1 PHP 5.6.16 результат: 106,45 оп/сек

Drupal 8.0.1

В качестве тестового сайта мы использовали свежеустановленную CMS в стандартной конфигурации. На главную страницу были выведены 50 тизеров с демо-данными (через модуль Devel). Страницу в течение минуты одновременно нагружали 15 пользователей.

Мы получили настолько интересный результат, что после тестирования полностью удалили Drupal, установили его заново по инструкции и повторно провели все испытания. И получили аналогичные результаты!

Сравнение производительности PHP 7.0 и HHVM - 4

  • Drupal 8 HHVM результат: 1739,28 оп/сек
  • Drupal 8 PHP 7.0 результат: 917,10 оп/сек
  • Drupal 8 PHP 5.6.16 результат: 794,20 оп/сек

Magento 2.0 Community Edition

Использовалась стандартная установка с официальными демо-данными. Нам пришлось включить внутренний кэш Magento, так как в противном случае мы получали несерьезные 5 оп/сек. Домашнюю страницу одновременно в течение минуты нагружали 15 пользователей.

Сравнение производительности PHP 7.0 и HHVM - 5

  • Magento HHVM результат: 192,19 оп/сек
  • Magento PHP 7.0 результат: 183,87 оп/сек
  • Magento PHP 5.6.16 результат: 113,34 оп/сек.

OctoberCMS

Эта CMS, основанная на Laravel, дала нам возможность заодно протестировать и сам фреймворк Laravel. Во время установки мы выбрали тему Vanilla, включающую в себя систему пользователей, блог и форум. В течение минуты главную страницу одновременно нагружали 15 пользователей.

Сравнение производительности PHP 7.0 и HHVM - 6

  • OctoberCMS HHVM результат: 583,07 оп/сек
  • OctoberCMS PHP 7.0 результат: 407,89 оп/сек
  • OctoberCMS PHP 5.6.16 результат: 248,19 оп/сек.

PyroCMS v3 beta2

Еще одна CMS, основанная на Laravel. Мы использовали стандартную установку, добавили в блог один пост, и эту «отдельную страницу» 15 пользователей одновременно тестировали в течение одной минуты.

Сравнение производительности PHP 7.0 и HHVM - 7

  • PyroCMS HHVM результат: 177,39 оп/сек
  • PyroCMS PHP 7.0 результат: 145,95 оп/сек
  • PyroCMS PHP 5.6.16 результат: 75,17 оп/сек.

Laravel 5.1.11

Мы установили доступный по умолчанию пакет фреймворка Laravel и протестировали его «приветственный экран» без каких-либо соединений с базой данных. Не забывайте, что OctoberCMS, протестированный выше, построен на базе Laravel, так что это выглядит так, словно вы добавляете дополнительные модули, да и сам HHVM забирает на себя инициативу. Мы запустили тесты на одну минуту с 10 пользователями одновременно.

При использовании команд оптимизации php artisan –force и php artisan config:cache результаты были в полтора раза лучше, чем представленные ниже.

Сравнение производительности PHP 7.0 и HHVM - 8

  • Laravel 5.1.11 HHVM результат: 1128,41 оп/сек
  • Laravel 5.1.11 PHP 7.0 результат: 1363,24 оп/сек
  • Laravel 5.1.11 PHP 7.0 без OPcache результат: 245,60 оп/сек.

Flarum v0.1.0-beta.4

Flarum — восхитительно простое программное обеспечение для создания форума. Это общий преемник esoTalk и FluxBB. Поскольку он использует сочетание фреймворков Laravel, Zend и компонентов Symfony (актуальный набор программного обеспечения в мире PHP), то мы решили, что будет интересно включить его в список.

Но похоже, что мы немного погорячились, и в этой статье для Flarum придется оставить заглушку — он не работает ни с HHVM, ни с PHP 7. На HHVM мы получаем ошибку “Fatal error: Return inside a finally block is not supported in vendor/flarum/core/src/Foundation/Application.php on line 120”, а на PHP 7 сообщение: “Notice: Undefined property: stdClass::$data in vendor/flarum/core/src/Http/Controller/ClientView.php on line 326”. Вдобавок возникают многочисленные ошибки JavaScript.

Резюме

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

Автор: NIX Solutions

Источник [5]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/php-2/106610

Ссылки в тексте:

[1] A Beginner’s Guide to Website Speed Optimization: https://kinsta.com/learn/page-speed/

[2] Best Free Website Performance Testing Tools: https://kinsta.com/blog/best-free-website-performance-testing-tools/

[3] другие: https://kinsta.com/blog/

[4] HHVM’s Repo Authoritative mode: http://docs.hhvm.com/hhvm/advanced-usage/repo-authoritative

[5] Источник: http://habrahabr.ru/post/273365/