文档章节

PHP 7 vs HHVM

mickelfeng
 mickelfeng
发布于 2015/10/13 17:13
字数 679
阅读 131
收藏 0

什么是 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/

© 著作权归作者所有

共有 人打赏支持
mickelfeng

mickelfeng

粉丝 226
博文 2607
码字总数 566507
作品 0
成都
高级程序员
忘记 PHP!Facebook 的 HHVM 引擎将转用 Hack 语言

因为 PHP 7 与 PHP 5 存在很大的兼容性问题,Facebook 的 HHVM 团队决定改用 Hack 开发 HHVM。 Facebook 的 HHVM 是一个高速的 PHP 执行引擎,日前宣布将会逐渐摆脱对最新的主要 PHP 版本 —...

局长
2017/09/21
4K
47
在Qcon 2015 北京上的演讲PPT – PHP7

06 May 15 在Qcon 2015 北京上的演讲PPT – PHP7 作者: Laruence( ) 本文地址: http://www.laruence.com/2015/05/06/3007.html 转载请注明出处 不少同学对于PHP7, 还是了解的不多, 这次在Qco...

Laruence
2017/10/21
0
0
PHP落伍了?Facebook的HHVM引擎改用Hack

  【IT168 评论】Facebook的Hip Hop虚拟机(HHVM)是一种PHP快速执行引擎,但是这次却没有继续沿用最新的PHP 7版本,而是将重点放在了PHP衍生工具――Hack上。Hack集合了PHP和Java两种语言的...

it168网站
2017/09/22
0
0
PHP历史之4-不得不说细说的FB娇子---HHVM

HHVM安装使用教程-高效的PHP运行环境提升PHP性能9倍以上 HHVM即HipHop Virtual Machine,目前是3.0版本,出自Facebook,它先将PHP和Hack程序编译为中间字节码,然后通过just-in-time (JIT)...

ccpit2b2c
2017/07/20
0
0
Facebook 开发的 HHVM 引擎宣布停止支持 PHP

近日,Facebook 开发的 PHP 执行引擎 HHVM 在其官方博客上宣布,他们即将停止支持 PHP。 HHVM 通过将 PHP 代码动态翻译成原生机器码而大幅提高速度。HHVM 支持 PHP 和 PHP 方言 Hack 语言。但...

局长
09/14
0
35

没有更多内容

加载失败,请刷新页面

加载更多

聊聊redisson的DelayedQueue

序 本文主要研究一下redisson的DelayedQueue maven <dependency><groupId>org.redisson</groupId><artifactId>redisson</artifactId><version>3.8.1</version></dependenc......

go4it
26分钟前
1
0
一张图看懂JVM

JVM结构示意图 JVM总体概述 JVM总体上是由类装载子系统(ClassLoader)、运行时数据区、执行引擎、内存回收这四个部分组成。其中我们最为关注的运行时数据区,也就是JVM的内存部分则是由方法...

小致dad
28分钟前
0
0
安全管理标准

安全生产严重等级分类: 故障频次: 风险等级矩阵:

乔老哥
59分钟前
2
0
数据结构“树”的相关微视频

今天在腾讯视频上闲逛,然後发现一个叫“岚人”的用户上传了几段小视频,基本上都在5分钟以内,讲解了关于树的一些结构和算法。零代码,非常适合初学者入门。不过,对于老鸟来说,这也是非常...

Iridium
今天
1
0
10-利用思维导图梳理JavaSE-Java 集合

10-利用思维导图梳理JavaSE-Java 集合 主要内容 1.Collection接口 2.Set接口 2.1.Set接口概述 2.2.HashSet类 2.3.TreeSet类 2.4.SortedSet接口 3.List接口 3.1.List接口概述 3.2.ArrayList类...

飞鱼说编程
今天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部