Я ответил на этот вопрос на Reddit несколько месяцев назад. Я скопировал свой ответ ниже, поскольку с тех пор состояние мира не сильно изменилось. Но имейте в виду, что HHVM все еще развивается, на самом деле довольно быстро, и поэтому он может легко устареть через месяц или два.
Я работаю в команде Hack в Facebook. Ответ на этот вопрос несколько тонкий.
Как уже говорили другие, перенос вашего PHP-кода с PHP5 на HHVM может привести к значительному ускорению. Насколько значительным, зависит от множества факторов. Если вы уже привязаны к IO, вы можете вообще ничего не увидеть; если вы ближе к привязке к процессору, сообщалось об ускорении примерно до 5x, хотя вы, вероятно, получите что-то среднее. Вы должны пойти и попробовать его на своем собственном коде с реальной рабочей нагрузкой — у HHVM есть множество факторов, в частности большее время запуска, которые делают его не таким хорошим на микротестах, но на реальных рабочих нагрузках он должен превзойти PHP5. Для максимальной выгоды рефакторинг вашего кода, чтобы вывести вещи из верхнего уровня в функции/классы, очень поможет (мы не можем JIT-код на верхнем уровне), как и настройка авторитетный режим репозитория.
Но это просто PHP на HHVM, а не Hack на HHVM. Какое ускорение вы получите от конвертации кода в Hack? Это зависит от того, как вы выполняете преобразование, но ответ, по крайней мере сейчас, «не очень». Если вы просто вставите <?hh
вверху каждого файла вместо <?php
и устраните все несовместимости, которые появится, когда вы запустите средство проверки типов, тогда ваш код, скорее всего, будет работать так же, как и раньше. Хакерский и PHP-код имеют одинаковое представление во время выполнения, так что на самом деле вы не сильно изменились.
Однако, если вы сделаете это, вы не воспользуетесь всеми преимуществами Hack! Если вы войдете и начнете добавлять аннотации типов, вы сможете создавать все больше и больше информации для использования HHVM во время выполнения. Этот процесс может ускорить ваш код — HHVM может генерировать специализированный по типам (т. е. более быстрый) код во многих случаях, когда раньше он не мог определить тип. Здесь также не ожидайте огромного ускорения — сейчас это в основном теоретическое, и есть много мест, где мы можем лучше использовать информацию о типах для создания более быстрого кода. (Например, прямо сейчас мы мало что делаем с возвращаемыми типами во время выполнения.) Но это та часть, которая может помочь, и может помочь больше, когда HHVM станет умнее.
Но, конечно, имейте в виду, что скорость выполнения была не целью Hack, а эффективностью разработчика. Любой прирост производительности, вероятно, не будет стоить усилий по переходу с PHP на HHVM на Hack на HHVM. Однако выигрыш в производительности разработчиков, вероятно, есть.
Значит ли это, что переход с PHP5 на HHVM ускорит ваш код? Скорее всего. Быстрое преобразование в Hack ускоряет его? Нет. Ускоряет ли добавление дополнительных типовых аннотаций? Может немного, а может и больше в будущем, но не в этом дело.
person
Josh Watzman
schedule
29.09.2014