Разработчики социальной сети Facebook представили проект "HipHop"
- новый открытый транслятор для языка PHP, распространяемый в рамках
свободной лицензии PHP. HipHop трансформирует код PHP скриптов в высоко
оптимизированное представление на языке C++, пригодное для дальнейшей
компиляции при помощи g++ в машинные инструкции. В настоящее время
HipHop используется для обработки около 90% запросов в сети Facebook.
В состав пакета входит транслятор кода, переработанный PHP
runtime и набор переписанных с целью повышения производительность
стандартных библиотек и расширений. По заявлению разработчиков
использование HipHop позволяет уменьшить нагрузку на CPU примерно на
50%. Обратной стороной высокой производительности является
принципиальное отсутствие поддержки некоторых PHP конструкций, таких
как eval(). HipHop содержит более 300 тыс. строк кода и 5 тыс.
unit-тестов, загрузить исходные тексты транслятора можно будет через
несколько часов с сервиса GitHub.
Проект создан как универсальная альтернатива традиционному в
больших проектах способу оптимизации - переписыванию наиболее
ресурсоемких участков PHP кода на языке C/C++ и оформления таких блоков
в виде PHP расширений. Перед созданием HipHop в Facebook были
предприняты и другие методы оптимизации, например, был переписан код
Zend Engine и патчи переданы проекту PHP, но результат подобной
оптимизации оказался не таким большим как хотелось бы. Zend Engine
преобразует исходные тексты на языке PHP в опкод, который затем
выполняется на виртуальной машине Zend. Проекты подобные APC и
eAccelerator кешируют сгенерированный опкод, а Zend Server кроме
кеширования добавляет в опкод некоторые дополнительные оптимизации. Из других подобных проектов отмечены компиляторы phc и Roadsend, преобразующие PHP код в представление на языке Си, Quercus - транслятор PHP в Java и проект Phalanger, преобразующий PHP код в .Net.
|