Facebook анонсировал HipHop VM и JIT-компилятор для языка PHP

Компания Facebook открыла результаты работы группы, занимающейся экспериментами в области динамической трансляции кода на языке PHP в машинные инструкции. Разработка позиционируется как продолжение развития проекта HipHop, в рамках которого в прошлом году был разработан транслятор hphpc для преобразования PHP-скриптов в представление на языке C++, пригодное для дальнейшей компиляции при помощи g++ в машинные инструкции. В результате проведённой работы была создана виртуальная машина hhvm (HipHop Virtual Machine), которая за счет JIT-компиляции позволила обеспечить достойный уровень производительности при выполнении PHP-кода.

Hhvm позволяет выполнять практически любой PHP-код, используя в процессе JIT-компиляции динамические оптимизации, учитывающие особенности выполнения скрипта. Статическая компиляция при помощи hphpc вносила существенные ограничения на оформление кода и ограничивалась лишь статическими методами анализа при выработке плана оптимизации. При динамической трансляции в hhvm задействована возможность определения типов данных в процессе выполнения кода и генерации на лету более оптимальных наборов машинных инструкций, оптимизированных специально для заданных типов.

Перед выполнением PHP-скрипты преобразуются с задействование наработок hphpc в специальное промежуточное абстрактное представление AST (Abstract Syntax Tree), а затем транслируется в байткод HHBC (HipHop bytecode), который в дальнейшем выполняется внутри высокоуровневой виртуальной машины. Виртуальная машина поддерживает два режима работы - интерпретация байткода и трансляция на лету в машинные инструкции x64. Оба режима могут бесшовно работать бок о бок, но в качестве перспективного направления развивается режим трансляции.

В настоящее время hhvm уже используется для обеспечения работы сервисов Facebook в качестве замены поддерживаемого силами компании высокопроизводительного PHP-интерпретатора hphpi, обеспечивая прирост производительности в среднем в 1.6 раз, при тестировании на реальных приложениях, используемых в Facebook. В дальнейшем планируется задействование hhvm для выполнения всего кода Facebook, написанного на языке PHP. Скорость работы режима трансляции hhvm приближается к производительности программ, скомпилированных при помощи hphpc (скорость режима интерпретации оценивается коэффициентом 0.2 от скорости скомпилированных программ, а режима трансляции - 0.6).



Источник:
http://www.opennet.ru/opennews/art.shtml?num=32539

<= Назад
Комментарии
]]> ipv6 ready Kiev LUGLinux4MeНостальгияЛичный сайт skeletora ]]>