文档章节

PHP 7 vs HHVM

mickelfeng
 mickelfeng
发布于 2015/10/13 17:13
字数 679
阅读 136
收藏 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

粉丝 231
博文 2690
码字总数 572815
作品 0
成都
高级程序员
私信 提问
PHP 7 vs HHVM 比较

PHP 是最流行的用于 web 开发的脚本语言之一。PHP 的最新版本,PHP 7 在性能上做了很大的优化。不过,PHP 还有一个竞争对手 HHVM (HipHop Virtual Machine) — 一个运行 PHP 代码的虚拟工具。...

oschina
2015/10/10
21.3K
53
忘记 PHP!Facebook 的 HHVM 引擎将转用 Hack 语言

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

局长
2017/09/21
5.6K
47
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
PHP 虚拟机 HHVM 3.24 正式发布:不再支持 PHP 5

HHVM 3.24 终于发布了,此版本包含新功能、错误修复、性能改进和对未来改进的支持工作。值得注意的是,HHVM 3.24 是支持 PHP 5 的最后一个版本,这包括对 PHP 5 扩展()的源码级别兼容性。官方...

局长
01/17
3.5K
12

没有更多内容

加载失败,请刷新页面

加载更多

Spring源码学习笔记-1-Resource

打算补下基础,学习下Spring源码,参考书籍是《Spring源码深度解析》,使用版本是Spring 3.2.x,本来想试图用脑图记录的,发现代码部分不好贴,还是作罢,这里只大略记录下想法,不写太细了 ...

zypy333
今天
10
0
RestClientUtil和ConfigRestClientUtil区别说明

RestClientUtil directly executes the DSL defined in the code. ConfigRestClientUtil gets the DSL defined in the configuration file by the DSL name and executes it. RestClientUtil......

bboss
今天
17
0

中国龙-扬科
昨天
2
0
Linux系统设置全局的默认网络代理

更改全局配置文件/etc/profile all_proxy="all_proxy=socks://rahowviahva.ml:80/"ftp_proxy="ftp_proxy=http://rahowviahva.ml:80/"http_proxy="http_proxy=http://rahowviahva.ml:80/"......

临江仙卜算子
昨天
10
0
java框架学习日志-6(bean作用域和自动装配)

本章补充bean的作用域和自动装配 bean作用域 之前提到可以用scope来设置单例模式 <bean id="type" class="cn.dota2.tpye.Type" scope="singleton"></bean> 除此之外还有几种用法 singleton:......

白话
昨天
10
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部