HHVM,高性能的PHP執行引擎

HHVM,高性能的PHP執行引擎

HHVM (HipHop Virtual Machine) 是 Facebook 開源的 PHP 執行引擎。 HHVM 採用一種JIT(just-in-time)的編譯機制實現了高性能,同時又保持對 PHP 語法的充分支持。 在 Facebook 實際應用場景中,與 Zend PHP 5.2 引擎 + APC 相比,HHVM 實現了9倍的吞吐量提升和5倍的內存節約。
HHVM 可以作爲一個獨立的 webserver 運行,也可以提供 fastcgi 接口,掛在 webserver 下面。
官方博客:http://www.hhvm.com
github:https://github.com/facebook/hhvm

一些貼吧問答:參考貼吧:http://tieba.baidu.com/f?kw=hhvm

1 Lighttpd搭配hhvm呢?

  這個也是可以的 如果是使用hhvm的fastcgi協議,只需要把lighttpd配置中的php-cgi地址改到hhvm監聽的端口或unix socket地址即可

2 hhvm跑PHP腳本比zend還慢是怎麼回事?

1. 首先檢查你的配置項,必須設置Eval.Jit=1把JIT打開纔會快,如hhvm -vEval.Jit=1 test.php
2. 如果你是用time命令來計時,比如 time hhvm test.php 和time php test.php的結果來比較那是沒有意義的,因爲這個時間包含了HHVM編譯PHP代碼和JIT編譯的時間,而不是運行時間。總的看這個時間HHVM是更慢的,因爲更多時間花在編譯上。要測試運行時間的話,可以在PHP腳本中用gettimeofday計時打印出來。
3. 如果你是用server模式,要注意Eval.JitWarmupRequests這個選項,這個值默認是11,意思是前11個請求不使用JIT模式執行(方便做一些類型收集之類的事情),從第12個請求來始才啓動JIT,所以前11個請求都是慢的,第12個請求纔看出真正的性能。可以把Eval.JitWarmupRequests設置爲0這樣就永遠都用JIT模式執行
4. 如果你是自己編譯的HHVM,那要用Release模式編譯,Debug模式編譯出來的運行性能很差。

3 php性能分析

xhprof是PHP性能分析的好工具
hhvm內置了xhprof相關的函數,但需要打開編譯選項才能用
修改CMake/Options.cmake 文件,把option(HOTPROFILER "Enable support for the hot-profiler" OFF)的OFF改爲ON就可以了
其它的用法與zend版的相同,見xhprof的文檔即可

4 hhvm與hiphop的關係?

hiphop是之前facebook開發的將PHP轉換成C++代碼的編譯器,也稱HPHPc,PHP->C++->二進制程序->run,因爲預編譯好的所以必須犧牲PHP的一些動態特性(如eval);部署上,需要先在線下編譯好C++程序,再部署到線上執行。
hhvm是PHP執行引擎,PHP->Bytecode->(JIT)二進制code->執行,也支持直接執行Bytecode(Interpreter模式),兩者可以隨時切換,因此可支持完整的PHP特性;部署上,直接部署PHP代碼到線上就可以,HHVM會自動檢測代碼修改並重新編譯

5 hhvm的性能爲什麼比zend引擎高?

http://tieba.baidu.com/p/2902029974

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章