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