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