eval ()
, но позволяя повысить производительность.
С активной аудиторией в 1,1 млрд человек, Facebook крайне заинтересован в увеличении производительности веб-приложений. Поскольку многие программисты хорошо знакомы с PHP. Компания решила не отказываться от этого «медленного» языка, а вместо этого постараться максимально оптимизировать его. Кстати, так же делает и «Вконтакте» с недавно представленной технологией kPHP.
Впрочем, прежний подход по трансляции кода PHP в C++ пришлось оставить. Вместо этого выпущены виртуальная машина, окружение и JIT-компилятор для PHP под названием HipHop VM for PHP или просто HHVM. Здесь уже идёт речь о повышении производительности не на 50%, а на 400-800% (в пять-девять раз).
В мае серверы Facebook почти полностью перешли с HPHPc на HHVM. На Github выложен исходный код виртуальной машины и уже готовые собранные пакеты для Ubuntu 12.04, Debian 7 (wheezy) и Centos 6.4. Скоро обещают добавить пакет для FreeBSD 9.
По словам представителя Facebook, который недавно выступал на конференции O’Reilly Open Source Conference (OSCON), для стандартного веб-сайта, например, на хостинге WordPress, повышение производительности будет небольшим: всего в пять раз. Другое дело, если речь идёт о большой кодовой базе PHP, именно для такой оптимизирована виртуальная машина HHVM, так что здесь возможен рост производительности в девять раз.
«Если вы возьмёте какой-то код PHP и запустите его на HipHop, то CPU не будет ограничивающим фактором производительности, — говорит Джоэл Побар (Joel Pobar), менеджер по разработке Facebook. — Скорее вы увидите, что система тратит больше времени на запросы к базе данных или общение с memcache».
HHVM работает по образцу JVM (Java Virtual Machine): JIT-компилятор транслирует исходный код в машинные коды, когда это нужно, и позволяет учитывать различные факторы при генерации машинного кода. Например, если там вызов к базе данных MySQL, то JIT-компилятор посмотрит, какой тип данных вызывается, и сгенерирует соответствующий код на лету.
ссылка на оригинал статьи http://habrahabr.ru/post/188056/
Добавить комментарий