文档章节

PHP 7 vs HHVM

mickelfeng
 mickelfeng
发布于 2015/10/13 17:13
字数 679
阅读 123
收藏 0
点赞 0
评论 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
博文 964
码字总数 548669
作品 0
成都
高级程序员
忘记 PHP!Facebook 的 HHVM 引擎将转用 Hack 语言

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

局长 ⋅ 2017/09/21 ⋅ 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

PHP落伍了?Facebook的HHVM引擎改用Hack

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

it168网站 ⋅ 2017/09/22 ⋅ 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

【专访 PHP 之父】PHP7 性能翻倍关键大揭露

20岁老牌网页程序语言PHP,最快将在10月底释出PHP 7新版,这是十年来的首次大改版,最大特色是在性能上的大突破,能比前一版PHP 5快上一倍,PHP之父Rasmus Lerdorf表示,甚至能比HHVM虚拟机下...

oschina ⋅ 2015/10/26 ⋅ 101

PHP历史之3:秣兵历马的PHP7-王者归来

提起PHP7,就不得不提到源自FB的HHVM,据说安装了这种优化器,可以高效的PHP运行环境提升PHP性能9倍以上 当然PHP7已经超过了这种性能。 伴随着PHP 7的发布,这几天关于PHP 7性能和兼容性成了大...

ccpit2b2c ⋅ 2017/07/20 ⋅ 0

PHP 虚拟机 HHVM 3.24 正式发布:不再支持 PHP 5

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

局长 ⋅ 01/17 ⋅ 12

HHVM一键安装脚本--EasyHHVM

EasyHHVM是一个HHVM一键安装脚本,方便大家更容易安装部署HipHop PHP VM(HHVM)软件。EasyHHVM快速部署工具,开源此管理部署软件包,系统方便大家安装使用PHP新技术,以此和行业共同学习进步。...

EasyHHVM ⋅ 2013/09/15 ⋅ 2

在 Ubuntu 上配置高性能的 HHVM 环境

HHVM全称为 HipHop Virtual Machine,它是一个开源虚拟机,用来运行由 Hack(一种编程语言)和 PHP 开发应用。HHVM 在保证了 PHP 程序员最关注的高灵活性的要求下,通过使用最新的编译方式来取...

酱醋茶丶 ⋅ 2015/10/21 ⋅ 0

PHP 成弃子,Facebook 引擎转用 Hack 语言

历史向来是长江后浪推前浪,这一点在编程语言界也不例外。最新消息显示,HHVM(HipHop Virtual Machine)是由 Facebook 公司出品的高性能开源服务器,长期以来由 PHP 编程语言来搭建服务器,...

达尔文 ⋅ 2017/09/27 ⋅ 36

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Greys Java在线问题诊断工具

Greys是一个JVM进程执行过程中的异常诊断工具。 在不中断程序执行的情况下轻松完成JVM相关问题排查工作 目标群体 有时候突然一个问题反馈上来,需要入参才能完成定位,但恰恰没有任何日志。回...

素雷 ⋅ 27分钟前 ⋅ 0

git从远程仓库拉取代码的常用指令

一种(比较麻烦的)拉代码的方法 git clone //克隆代码库,与远程代码库的主干建立连接,如果主干已经在就不用再clone啦,克隆路径为当前路径下的新创建的文件夹 git checkout -b //本地建立...

Helios51 ⋅ 41分钟前 ⋅ 0

005. 深入JVM学习—Java堆内存参数调整

1. JVM整体内存调整图解(调优关键) 实际上每一块子内存区域都会存在一部分可变伸缩区域,其基本流程:如果内存空间不足,则在可变的范围之内扩大内存空间,当一段时间之后,内存空间不紧张...

影狼 ⋅ 46分钟前 ⋅ 0

内存障碍: 软件黑客的硬件视图

此文为笔者近日有幸看到的一则关于计算机底层内存障碍的学术论文,并翻译(机译)而来[自认为翻译的还行],若读者想要英文原版的论文话,给我留言,我发给你。 内存障碍: 软件黑客的硬件视图...

Romane ⋅ 今天 ⋅ 0

SpringCloud 微服务 (七) 服务通信 Feign

壹 继续第(六)篇RestTemplate篇 做到现在,本机上已经有注册中心: eureka, 服务:client、order、product 继续在order中实现通信向product服务,使用Feign方式 下面记录学习和遇到的问题 贰 or...

___大侠 ⋅ 今天 ⋅ 0

gitee、github上issue标签方案

目录 [TOC] issue生命周期 st=>start: 开始e=>end: 结束op0=>operation: 新建issueop1=>operation: 评审issueop2=>operation: 任务负责人执行任务cond1=>condition: 是否通过?op3=>o......

lovewinner ⋅ 今天 ⋅ 0

浅谈mysql的索引设计原则以及常见索引的区别

索引定义:是一个单独的,存储在磁盘上的数据库结构,其包含着对数据表里所有记录的引用指针. 数据库索引的设计原则: 为了使索引的使用效率更高,在创建索引时,必须考虑在哪些字段上创建索...

屌丝男神 ⋅ 今天 ⋅ 0

String,StringBuilder,StringBuffer三者的区别

这三个类之间的区别主要是在两个方面,即运行速度和线程安全这两方面。 首先说运行速度,或者说是, 1.执行速度 在这方面运行速度快慢为:StringBuilder(线程不安全,可变) > StringBuffer...

时刻在奔跑 ⋅ 今天 ⋅ 0

java以太坊开发 - web3j使用钱包进行转账

首先载入钱包,然后利用账户凭证操作受控交易Transfer进行转账: Web3j web3 = Web3j.build(new HttpService()); // defaults to http://localhost:8545/Credentials credentials = Wallet......

以太坊教程 ⋅ 今天 ⋅ 0

Oracle全文检索配置与实践

Oracle全文检索配置与实践

微小宝 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部