標籤:http io ar 使用 sp for strong on 檔案
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
HHVM,高效能的PHP執行引擎