HHVM против PHP7 – конкуренция уже на подходе!

Дата публикации:Сентябрь 15, 2015

Несколько лет назад специалисты Facebook поставили перед собой достаточно сложную цель по реорганизации фундамента одной из самых популярных социальных сетей в мире, стараясь добиться приемлемого уровня производительности. PHP был в моде десяток лет назад, когда сеть Facebook только набирала обороты и постепенно поворачивалась в сторону глобальной целевой аудитории.

HHVM-vs-PHP-7

Динамический язык программирования открыл перед разработчиками Facebook беспрецедентные возможности по реконструкции сайта — то, что сам Марк Цукерберг назвал «путем хакера». Однако в конечном счете все это негативно сказалось на методах быстрой разработки. PHP с трудом выдерживал нагрузку в несколько миллионов пользователей, которые посещали сайт каждую минуту.

Тогда они изобрели HipHop, инструмент, который конвертирует PHP-скрипт в C++-код перед его компиляцией и выполнением на веб-серверах. Это отдельное – но не самое простое – изменение позволило значительно увеличить производительность сервера; теперь сервер мог спокойно выдерживать рост трафика на 500-600%. Если говорить с позиции бизнеса, то Facebook смогли сэкономить на стоимости серверов в 5 или даже в 6 раз, всего лишь изменив способ выполнения кода.

Однако со временем HipHop тоже перестал выдерживать обрушившиеся нагрузки, вследствие чего команде разработчиков Facebook понадобился еще один технический прорыв, который позволил бы как-то поддержать растущий трафик. В конечном счете команда разработала HipHop Virtual Machine (HHVM), систему, которая использовала Just-In-Time (JIT) компиляцию, позволяющую преобразовать PHP-код в машинный язык, чтобы установить синергию между PHP-кодом и выполняющим его оборудованием.

Со временем виртуальная машина стала доступной и всему WordPress-миру в виде движка с открытым кодом для выполнения PHP-кода; этот движок обещал аналогичные улучшения производительности по сравнению с традиционной для PHP виртуальной машиной Zend.

Сообщество PHP решило протестировать конкурентоспособность HHWM перед PHP7 – свежей итерацией PHP, которая обещает 100% улучшение производительности по сравнению с прошлыми PHP-версиями. PHP 7 будет отличаться следующими показателями:

Рост производительности

Сфера программирования меняется молниеносно. Компаниям необходимо предлагать мобильным пользователям самые лучшие конкурентоспособные преимущества. В этом контексте PHP7 будет включать в себя широкий диапазон улучшений механизма выполнения кода, снижать потребление памяти.

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

Зеев Сураски, соучредитель Zend Technologies, считает HHVM прямым конкурентом Zend и демонстрирует, как далеко ушла новая версия PHP в плане улучшения производительности.

Предположение о JIT

Реализация возможностей исполнения JIT для движка Zend является главным толчком к разработке нового поколения версий PHP. Эти возможности включают в себя динамическую компиляцию опкода Zend в родные машинные инструкции – главный принцип увеличения производительности, легший в основу движка HHVM.

Получается, что PHP 7 находится на одном уровне с HHVM без возможностей JIT-компиляции, которые должны появиться в движке Zend. PHP 7 будет иметь лучшую поддержку JIT-компилятора, что в будущем выльется в еще более значительные улучшения производительности.

Предположение об асинхронном программировании

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

Поскольку язык Hack, созданный Facebook для HHVM, уже поддерживает асинхронное программирование, разработчики PHP вполне могли ввести аналогичную опцию в PHP 7 или в последующие итерации. Следующая статья раскрывает список изменений синтаксиса, ожидаемых в PHP 7.

Поддержка автономной многопоточности позволит серверам на PHP обрабатывать одновременные запросы в отдельном пуле памяти.

Сравнительные тесты

Следующие тесты демонстрируют производительность различных версий PHP и HHVM в разных системах управления контентом.

Спецификация тестовой среды:

text-box-specs

Результаты теста демонстрируют значительное увеличение производительности PHP 7 по сравнению с его прошлыми итерациями, уменьшая разрыв между PHP и HHVM. PHP 7, запущенный с WordPress 4.1.1, позволяет системе выполнять в два раза больше запросов в секунду по сравнению с PHP 5.6, последней стабильной версией языка.

hhvm-php7-benchmark

Тесты, проведенные с Drupal 8, представили PHP 7 как явного победителя перед HHVM; PHP 7 позволил обработать на 37% больше дополнительных запросов к серверу в секунду. По сравнению с PHP 5.4, 5.5 и 5.6, которые обеспечивают минимальную производительность перед более поздними итерациями, PHP 7 позволяет добиться выполнения на 80% больше дополнительных запросов в секунду.

PHP-7-as-a-clear-winner-over-HHVM

Следующие тесты также показали, что PHP с Zend является лучшим в плане производительности пакетом, нежели HHVM, для различных CMS, включая WordPress и Drupal.

Тесты, проведенные с пакетом Ubuntu Utopic 5.5.12, позволили сравнить производительность PHP и HHVM в нескольких базовых тестовых средах:

next-generation-php-vs-hhvm

Результаты теста продемонстрировали интересное различие между HHVM и PHP. PHP 7 прошел тесты за 164.888 секунд с пиковым потреблением памяти в 30.879 Мб. Напротив, HHVM выполнил тесты в два раза быстрее (за 84.759 секунд), но использовал в 4,5 раза больше памяти (134.844 Мб).

HHVM в ETSY

Пиринговому гиганту электронной коммерции Etsy, который отметил более чем 108 миллионов долларов годового дохода с 54 млн зарегистрированных пользователей, потребовалось серьезное обновление своей технологической инфраструктуры, чтобы поддерживать миллионы посещений в день. Специалистам Etsy понадобилось улучшить производительность онлайн-сервиса и увеличить эффективность бэкэнда дата-центра.

Компания приняла решение перейти на HHVM, чтобы выполнять приложения PHP с максимальной производительностью для существующей аппаратной инфраструктуры, не вкладывая капитал в дополнительные дата-центры.

Etsy по большей части занимались своим новым внутренним API, который должен был предложить большую пропускную способность, чтобы серверы могли обрабатывать более сложные запросы, использовали меньше питания и тем самым снижали операционные издержки. Специалисты Etsy протестировали HHVM по сравнению с PHP 5.4, посылая случайные запросы к трем конечным точкам API, начиная с 10 запросов в секунду и заканчивая 280.

Результаты тестирования показали, что PHP демонстрировал экспоненциальное снижение производительности, начиная с 190 запросов в секунду и выше. При этом HHVM последовательно демонстрировал высокую производительность до достижения 280 запросов в секунду.

hhvm-response-time-load-increase

HHVM также оптимизировал процессорное время и потребовал в два раза меньше циклов процессора по сравнению с PHP, работающим с тем же самым веб-трафиком. HHVM оказался более эффективным при взаимодействии с бэкэнд-сервисами:

hhvm-and-php-cpu-usage

HHVM в Wiki

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

Имея минимальный бюджет и штат, фонд Wikimedia Foundation был вынужден использовать инновационные решения, чтобы повысить производительность бэкэнда сервера и его пропускную способность. Установка дополнительных серверов только ухудшила бы производительность, поскольку PHP и однопоточные языки не могут быть распараллелены. С другой стороны, HHVM может одновременно нагружать несколько ядер процессора, чтобы максимизировать потенциал производительности серверов.

Wikimedia добились следующих достижений в плане производительности, развернув HHVM:

  • Нагрузка на процессор снизилась с 50% до 10%
  • Среднее время сохранения страницы снизилось с 6 секунд до 3. Это время представляет собой интервал между щелчком пользователя по кнопке submit или preview и обработкой запроса сервером. Wikimedia в 2014 году получила более 100 млн запросов на редактирование, и HHVM позволяет ежегодно экономить 10 лет задержки.
  • Медианное время сохранения страницы снизилось на две трети, с 7,5 секунд до 2,5 секунд.
  • Среднее время загрузки страниц также сократилось с 1,3 секунд до 0,9 секунд.

HHVM-average-page-load-time

Заключение

Производительность веб-сайта – ключевой элемент эффективной работы ресурса. Прогрессивные бизнес-организации разрабатывают системы, внедряя инновации, которые позволяют им поставлять лучшие, интеллектуальные, полезные онлайн-сервисы быстрее, чем когда-либо прежде.

Мы ждем, что стабильный релиз PHP 7 станет явным победителем в битве между HHVM и PHP7, однако пока можно сделать следующие выводы, основанные на результатах тестирования:

  • HHVM значительно быстрее, чем пакеты PHP-Zend для всех PHP-версий до PHP 7 или PHPng (PHP Next Generation).
  • PHP7 имеет небольшой перевес перед HHVM для сборок WordPress. Пользователи WordPress могут ожидать, что PHP 7 расширит и улучшит эти преимущества в будущем.
  • Переход к HHVM – это не просто нажатие на одну кнопку. Многие компании, такие как Etsy и Wikimedia Foundation, потратили более шести месяцев, чтобы полностью перейти от PHP-Zend к PHP-HHVM. Для автономных сайтов полный переход потребует четкого понимания внутренней структуры ресурса и богатого опыта специалистов.
  • Онлайн-компании должны сразу определиться с тем, что предпочесть — PHP 7 или HHVM, чтобы затем не лишиться имиджа бренда вследствие плохой производительности сайта.

Оптимизация производительности WordPress-сайтов, основанных на PHP – непрерывный процесс, состоящий из небольших последовательных улучшений. Введение возможностей улучшения производительности, выраженных в форме плагинов и небольших изменений кода, зачастую не позволяют исправить слабые места производительности вследствие ограниченных возможностей основной кодовой базы PHP и инфраструктуры.

Любые последующие улучшения производительности – на 100% и выше – будут связаны с пропускной способностью сервера и возможностями обработки вычислительные запросы с более высокой скоростью. И HHVM, и PHP 7 делают это возможным.

Источник: kinsta.com

Поделиться

3 комментария

  1. Поставил PHP7 RC2, под WordPress пока никаких проблем не замечено. По поводу скорости работы PHP7 — я в восторге.

  2. Евгений says:

    Интересно. Я думал что php будет со временем отмирать)

  3. Немного странно звучит PHP7, Гораздо проще на друпале все собирать.

Оставить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Получать новые комментарии по электронной почте. Вы можете подписаться без комментирования.