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

Facebook ускорил PHP в девять раз благодаря HipHop VM

Facebook ускорил PHP в девять раз благодаря HipHop VMКомпания Facebook продолжает работу по повышению производительности кода PHP. В 2010 году они выпустили компилятор HipHop (HPHPc), который транслировал PHP в C++, жертвуя некоторыми редко используемыми функциями PHP вроде eval(), но повышая производительность.

С активной аудиторией в 1,1 млрд человек, Facebook крайне заинтересован в увеличении производительности веб-приложений. Поскольку многие программисты хорошо знакомы с PHP, компания решила не отказываться от этого «медленного» языка, а постараться максимально оптимизировать его. Кстати, так же делает и «Вконтакте» с недавно представленной технологией kPHP [1].

Впрочем, прежний подход по трансляции кода PHP в C++ пришлось оставить. Вместо этого выпущены виртуальная машина, окружение и JIT-компилятор для PHP под названием HipHop VM for PHP [2] или просто HHVM. Здесь речь идёт о повышении производительности в пять-девять раз.

В мае серверы Facebook почти полностью перешли с HPHPc на HHVM. На Github выложен исходный код [3] виртуальной машины и уже готовые собранные пакеты [4] для Ubuntu 12.04, Debian 7 (wheezy) и Centos 6.4. Скоро обещают добавить пакет для FreeBSD 9.

По словам [5] представителя Facebook, который недавно выступал на конференции O'Reilly Open Source Conference (OSCON), для стандартного веб-сайта, например, на хостинге [6] WordPress, повышение производительности будет небольшим: всего в пять раз. Другое дело, если речь идёт о большой кодовой базе PHP, именно для такой оптимизирована виртуальная машина HHVM, так что здесь возможен рост производительности в девять раз.

«Если вы возьмёте какой-то код PHP и запустите его на HipHop, то CPU не будет ограничивающим фактором производительности, — говорит Джоэл Побар (Joel Pobar), менеджер по разработке Facebook. — Скорее вы увидите, что система тратит больше времени на запросы к базе данных или общение с memcache».

HHVM работает по образцу JVM (Java Virtual Machine): JIT-компилятор транслирует исходный код в машинные коды, когда это нужно, и позволяет учитывать различные факторы при генерации машинного кода. Например, если там вызов к базе данных MySQL, то JIT-компилятор посмотрит, какой тип данных вызывается, и сгенерирует соответствующий код на лету.

Автор: alizar

Источник [7]


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

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

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

[1] kPHP: http://habrahabr.ru/post/187214/

[2] HipHop VM for PHP: http://www.hhvm.com/

[3] исходный код: https://github.com/facebook/hiphop-php

[4] пакеты: https://github.com/facebook/hiphop-php/wiki#installing-pre-built-packages-for-hhvm

[5] словам: http://news.techworld.com/applications/3461086/facebook-invents-a-php-virtual-machine/

[6] хостинге: https://www.reg.ru/?rlink=reflink-717

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