欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

PHP 7 vs HHVM

程序员文章站 2022-05-05 10:21:07
...
什么是 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/

相关标签: PHP 7 vs HHVM