2014-09-22 84 views
4

我最近通过在Apache/NGinx/HHVM/ReactPHP的各种组合上运行它们,分析了两个测试PHP脚本的性能差异。Hack/HHVM与PHP/HHVM的性能差异

我现在的问题是,如果在HHVM上执行的PHP脚本和在Hack中执行的(尽可能)相同的脚本之间存在期望的性能差异(并且在HHVM上执行)?

有没有人试过吗?

+0

我删除了基于意见的声明。 – 2014-09-24 10:56:09

回答

4

根据HHVM博客上的comment,截至2014年4月,由于类型在运行时被擦除,因此没有运行时差异。

但是,一旦发生变化,考虑到HHVM针对Hack进行了优化,并且静态类型通常比动态类型更快,您应该能够期望性能提高很小。

和背景的一点点:

HHVM不得不从头开始进行开发,并且还是比较新的。 Facebook的代码库最初是在PHP中,因为他们有时间进行重新编码而转移到了Hack。他们专注于改善整个运行时间,这是一个相对较小的改进领域。这种变化只会影响Hack,所以我预计他们会延迟这一点,直到他们在其他更大的改进中运行得很低

+0

谢谢,这真的很有趣!你有没有洞悉他们为什么选择这样做,如果它可能会改变? – 2014-09-22 19:57:57

+0

用一些背景更新了我的答案。 – 2014-09-22 20:02:10

+1

它们没有完全擦除 - 只有泛型才会被删除,而其他泛型在运行时也会被强制执行。我们在使用它们专门化JIT代码方面做得并不是很好,至少不是我们所能达到的。前段时间我在Reddit上给出了一个更细致的答案:http://www.reddit.com/r/PHP/comments/2a2f75/hhvm_framework/cirs2qu。我的答案中最重要的部分就是结束了:如果您只是为了获得perf的好处而转换为Hack,那么您错过了很多关键点:工程时间和开发人员效率的好处。 – 2014-09-27 16:56:15