Pull to refresh
0

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

Reading time4 min
Views23K
Original author: Mark Gavalda


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

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

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

Для оценки производительности нового интерпретатора 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 без трудоемкого модифицирования программного обеспечения. Это могло бы увеличить производительность, но далеко не каждый будет этим заниматься.



  • 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.



  • 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, установили его заново по инструкции и повторно провели все испытания. И получили аналогичные результаты!



  • 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 пользователей.



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

OctoberCMS


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



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

PyroCMS v3 beta2


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



  • 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 результаты были в полтора раза лучше, чем представленные ниже.



  • 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.

Резюме


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

Articles

Information

Website
www.nixsolutions.com
Registered
Founded
1994
Employees
1,001–5,000 employees