2014-09-22 87 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