您好,欢迎访问一九零五行业门户网

PHP 7 vs HHVM

什么是 hhvm?
在2008年,facebook 启动了一项工作,计划开发一个工具 将 php 脚本转换成 c++,这样就可以被编译后在 web 服务器上运行。目的是节省服务器资源,这是一个很重要的目标,因为 facebook 的用户量正在快速增长。从这个意义上讲,这个项目是成功的,因为它可以让服务器处理之前五到六倍的请求量。
时间回到2010年,facebook 的服务器需求已经增加了很多,是时候考虑用新的创新来提升更大的效率。基于这个需求,facebook 开发了 hhvm。
hhvm 使用了 just-in-time (jit) 编译方式将 php 代码转换成某种字节码。接下来把字节码再转换成机器码并进行优化,让它尽可能快的运行。
什么是php 7?
php 7 是 php 社区对 hhvm 的回应。php 7 发布的预览版本号称比之前的 php 5 的性能要提升100%。
你可能会问 php 的版本直接从 php5 跳到了 php7,答案是这样的:php6 的开发开始于2005年,但是它的进展过于缓慢又出现了很多的问题,这样 php6 在它还没有发布正式版本之前就有了不好的名声。所以php社区决定给这个语言的新版本直接命名为 php7。
真正的问题不是 php5 和 php7 之间的比较,因为已经很明显了 php7 提供了更快速的运行速度。但是我们想比较的是 php7 和 hhvm。很多专家已经分别使用了这两个方法来处理php代码,并且揭示了一些有趣的结论。
php7缓存有opcode,
hhvm缓存有bytecode(hhbc即hiphop bytecode).
php7并没有引入jit,php7的性能提升在于采用了更好的内存结构,比如在栈上为zval分配内存取代php5在堆上分配, 直接操作zval取代php5用(二级)指针操作,减少了内存分配循环. php7执行wordpress使用的cpu指令数约为php5的1/4,计算密集型的bench.php的cpu指令数也能减少一半以上. http://rango.swoole.com/archives/440
hhvm是一个包含多个线程的单进程服务,它不像php-fpm有1个主进程和多个工作进程(nginx也是这种进程模型),也就是说hhvm因为线程问题发生崩溃或僵死时无法自动恢复,而php-fpm的主进程却可以重启工作进程. 百度转hhvm遇到的问题:崩溃/内存泄露/兼容性/死锁/性能(jit热身/没有触发jit). http://lamp.baidu.com/2014/11/04/hhvm-in-baidu/
其它类似信息

推荐信息