2014-09-22 1 views
4

Недавно я проанализировал различия в производительности двух тестовых скриптов PHP, выполнив их в различных комбинациях Apache/NGinx/HHVM/ReactPHP.Разница в производительности между Hack/HHVM и PHP/HHVM

Вопрос теперь в том, есть ли ожидаемая разница в производительности между скриптом PHP, выполняемым на HHVM, и (насколько это возможно) идентичным скриптом, реализованным в Hack (и выполняемым на HHVM)?

Кто-нибудь пробовал это?

+0

Я удалил заявление, основанное на мнении. –

ответ

4

Согласно comment в блоге HHVM, с апреля 2014 года не существует разницы во времени выполнения из-за стираний типов во время выполнения.

Однако после изменения вы сможете ожидать небольшого увеличения производительности, учитывая, что HHVM оптимизирован для Hack, и что статическая типизация обычно быстрее, чем динамическая типизация.

И немного фона:

HHVM должны были быть разработаны с нуля, и все еще является относительно новым. Кодовая база Facebook была первоначально на PHP и перешла в Hack, поскольку у них было время перекодировать. Они сосредоточены на улучшении времени выполнения в целом, и это (сравнительно) очень незначительная область улучшения. Это изменение повлияет только на Hack, поэтому я ожидаю, что они задержут это до тех пор, пока они не будут работать на других, более крупные улучшения

+0

Спасибо, это действительно интересно! У вас есть представление о том, почему они решили это сделать, и если это может измениться? –

+0

Обновлен мой ответ с немного фона. –

+1

Они не полностью стерты - только дженерики на самом деле стираются, другие также применяются во время выполнения. Мы просто не очень хорошо используем их, чтобы специализировать код JIT'd, по крайней мере, не так сильно, как мы могли бы быть. Недавно я дал более тонкий ответ Reddit: http://www.reddit.com/r/PHP/comments/2a2f75/hhvm_framework/cirs2qu. Самая важная часть моего ответа - это конец: если вы переходите на Hack только для первоочередных преимуществ, то вы пропустили очень много: преимущества в инженерном времени и эффективность разработчика. –