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

12 декабря 2011 года

Компания 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).

В настоящее время степень завершённости проекта оценивается в 90% Из планов на будущее отмечается определение формата для сохранения байткода на диске для сокращения времени запуска и сохранении накопленной в процессе выполнения статистики. Полностью стабилизировать работу динамической трансляции и довести уровень производительности до скомпилированных в hphpc программ планируется в течение нескольких месяцев. Код открыт под лицензией PHP и доступен для загрузки на странице проекта в GitHub.

Источники

править


 
 
Creative Commons
Эта статья содержит материалы из статьи «Facebook анонсировал виртуальную машину HipHop и JIT-компилятор для языка PHP», опубликованной OpenNET и распространяющейся на условиях лицензии Creative Commons Attribution (CC BY) — указание автора, источник и лицензию.
 
Эта статья загружена автоматически ботом NewsBots в архив и ещё не проверялась редакторами Викиновостей.
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.

Комментарии

Викиновости и Wikimedia Foundation не несут ответственности за любые материалы и точки зрения, находящиеся на странице и в разделе комментариев.