- 7 января 2015
- просмотров 2292
Инфраструктура Википедии (Wikipedia) переведена со штатного интерпретатора языка программирования PHP 5.3 на развиваемую инженерами Facebook виртуальную машину HHVM (HipHop Virtual Machine), которая позволила существенно ускорить выполнение кода движка MediaWiki, сообщают
OpenNET и другие СМИ со ссылками на блоги
Фонда Викимедиа (Wikimedia Foundation) и
HHVM.
В настоящее время все некешируемые операции в Википедии (запросы к API, функции редактирования, показ кастомизированного интерфейса для зарегистрированных пользователей) производятся с использованием HHVM. Перевод Вики на HHVM начался в марте прошлого года. За этот период была проделана работа по устранению возникавших проблем.
В итоге внедрение HHVM позволило почти в два раза уменьшить время обработки динамического контента Википедии и значительно снизило нагрузку на процессор, по сравнению с прежней конфигурацией. Например, время сохранения изменений сократилось в среднем с 6 до 3 секунд, время выдачи страницы для зарегистрированных пользователей уменьшилось с 1.3 до 0.9 секунд, а загрузка процессоров на типовом сервере Вики снизилась в 5-6 раз. Отмечается, что по сравнению с PHP 5.3 в актуальной версии PHP 5.6 наблюдается заметный прогресс в области увеличения производительности, поэтому разница между PHP 5.6 и HHVM оказалась бы не столь значительной.
Основная причина высокой производительности HHVM заключается в возможности применения JIT-компиляции и динамических оптимизаций, учитывающих особенности выполнения скрипта. В процессе выполнения кода производится определение типов данных и генерация на лету эффективных наборов машинных инструкций, оптимизированных специально для используемых типов. Перед выполнением PHP-скрипты преобразуются в специальное промежуточное абстрактное представление AST (Abstract Syntax Tree), которое затем транслируется в байткод HHBC (HipHop bytecode), который выполняется внутри высокоуровневой виртуальной машины.