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

confguru

ExAdmin
Команда форума
Компания 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.

Источник: opennet.ru
 

Вурдалак

Продвинутый новичок
динамической трансляции кода на языке PHP в машинные инструкции
Я что-то не понимаю: Facebook просто написали свою версию интерпретатора, получается?

Виртуальная машина поддерживает два режима работы - интерпретация байткода и трансляция на лету в машинные инструкции x64
И в чём принципиальное отличие?
 

AmdY

Пью пиво
Команда форума
Хотелось бы послушать Фишера. Неужели благодаря ускорению php в таких проектах можно получить прирост 1.6, да ещё это поверх тех цифр которые выиграли на обычном химхопе. Мне кажется, что это развод.
 

MiksIr

miksir@home:~$
1.6 - это относительно hphpi, а это хипхоповский интерпретатор
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
читаю, радуюсь, но возникает ощущение deja vu :)
 
Сверху