Facebook期望通过”HipHop”虚拟机(HHVM)来提高PHP的性能

2012 年 10 月 13 日9290

Facebook期望通过”HipHop”虚拟机(HHVM)来提高PHP的性能

发布者:Linux中国
 日期:
2011-12-20 07:56:08 浏览次数:0 (共有_条评论)
查看评论 | 我要评论

当我们仔细看Facebook大多数页面的URL时,会看到一些以.php后缀结尾的页面。那是因为Facebook很大程度上依靠PHP这个脚本语言来开发自己大部分面向Web的页面。因为PHP的流行程度和极其容易上手的特性使公司的开发人员能用它很快的为其网站构建新的功能。但是像Facebook这样的网站每月都有千亿次的访问,PHP在性能上的缺乏使Facebook应对这样的问题时遇上了瓶颈。因此Facebook一直大力致力于在PHP在性能方面的改善,使其精简,快速更有效率。他们在这个方向的努力有了成效,他们最新开发出的技术:HipHop VM(HHVM), 一个能够显著提高PHP加载动态页面性能的虚拟机。更值得称道的是,Facebook把这个技术开源与世人共享。

刚开始时,让Facebook提升性能的工作主要集中在调整著名的Zend引擎上,通过提高引擎对Facebook的兼容性(包括对引擎上的问题进行修复及打补丁)以及编写基于C++的PHP扩展来减缓程序的应用逻辑在运行时所造成的繁重负载。然而,在去年的时候,Facebook高级软件工程师Haiping Zhao在Facebook开发者博客上发了一个帖子,认为按这样的努力方向会因为要求开发者精通基于C++的Zend API而分割大量开发资源,耗费大量的时间。因为Facebook希望保持尽可能多的工程师继续做PHP开发,公司也没有看到通过调整修改Zend引擎来达到开发者所期望的性能提升。

因此,Facebook团队开始寻求除Zend之外的选择方向。在2010年,公司把所有精力集中在开发一种程序解释器:HPHP,或称作”HipHop“,它是一种通过将PHP脚本代码先转换成抽象语法树(AST)(这样PHP代码可被结构化,使分析和遍历它变得很容易),而后再转换成被优化的C++代码。将PHP转化成较低级语言并不是一个新概念,譬如Roadsend,将PHP转换成C并编译。而将PHP代码转化成C++可以让Facebook更好更容易的整合那些定制的,已经用C++写的后台服务。Hiphop几乎将Facebook代码的运行速度提升了一倍,在很多情况下,Facebook服务器的利用率也对应减半。它的出现对其他的PHP产品来说也同样受益,譬如Wordpress,在其性能基准测试中发现性能也提升了一倍。

但是,在开发HipHop中也有以下这些问题。.其中一个问题就是,Facebook在开发和测试他们的代码时可能不再使用标准的PHP解释器。因为HipHop还没有完全实现涵盖PHP的每一个层面(虽然他们说“HipHop支持PHP5.3中的大部分特性”)。也有在PHP里被支持的一些独特的特性已经在HipHop里被实现—但是很多并被没有被很好的记录下来或者根本没有文档记录。所以用一个标准的PHP环境去调试HipHop几乎毫无意义—因为它将不会发现那些从PHP转换到C++过程时可能发生的错误。Facebook 软件工程师 Minghui Yang 在他10月一篇博客: “使HPHPi快些“提到:”老的PHP解释器不在适用于我们的PHP代码, Facebook开发者现在需要代码调试后能立即看到结果的解释器”。

为了使调试代码更加容易,Facebook工程师开发了自己的PHP解释器,HPHPi,这是一种能够很好匹配PHP代码转换及编译行为的解释器。然而不幸的是,尽管工程师尽力提升其性能,HPHPi依旧运行得很慢。前Facebook软件工程师Evan Priestly在Quora中的一篇帖子提到,”HPHPi要比PHP差不多慢上一倍”。除此之外,当HPHPi通过AST来分析PHP代码时,会在编译中出错,并且实现不了像在HipHop里生成C++这样的功能。

在将那些通过解释器把动态语言(比如PHP)转化成静态被编译过的语言时, Facebook也遇到了一些限制。比如变量,数据类型及函数在PHP中工作方式各不相同,因为他们是在脚本运行时才被分配调用,而非在被具体编写时,所以,一些Facebook应用的元素在被静态编译后并不能很好地运行起来。

以上这些问题就是创造HHVM(HipHop虚拟机)的出发点的。HHVM使用同样的AST技术作为HipHop的编译器,然而不同的是,在转换后,它生成的是一种字节码而非C++代码。和Java或C#不同,HipHop并没有采用动静态结合的”即时编译”方式,它采用trace-based translation来逐条分析脚本中的每一个循环语句,风格上有点像Mozilla为编译Javascript而开发的编译器。被HHVM虚拟机翻译后所生成的字节码会随后被一个实时解释器所执行。

HHVM现在仍处于开发阶段,目前的进度差不多是完成了90%,根据Facebook软件工程师Jason Evans的话来说,HHVM解释器的速度已经比HPHPi快60%了,快到已足以让Facebook将其所有产品转移到VM平台上作开发。然而,和编译过的代码相比,它的速度仍不及后者的四分之一,Facebook正在解决静态语言转换相关的问题以便能更容易地维护代码,并希望最终能让其所有产品的代码在HipHop VM上运行。同时,HHVM的代码,和之前的HipHop一样,已经在PHP和Zend的认证下开源,并公开发表在GitHub上。

>>更多交流,请到ChinaUnix【论坛】:http://linux.chinaunix.net/bbs/forum-24-1.html

关键词:期望性能

相关文章

网友评论

已有0位网友发表了看法

论坛热门讨论更多>>· 2009年4月 ChinaUnix《开源时代》3
· 有奖评论:您认为微软能击败Linux吗
· -----------IT业界新闻与评论版规定
· 有奖调查:您最近是否有操作系统的
· IT业其实是被java毁了,而不是开源
· 计算机英雄史 第一榜
· CU上高手很多? 笑死人! 这个地方多
· 有些应届生的素质就真的这么差吗?

最新网友评论

1.转换太慢,不知用什么方法能快 2.用暴风播放最后部分没有声音,不知什么...

来自IANA的网友对新闻:旅游归来 高清DV拍摄MTS视频如何整理的评论
索爱A8I简直烂透了,垃圾!!!

来自美国的网友对新闻:移动定制机 索尼爱立信A8i仅售价2088元的评论
假手机,不要买,深圳市涵馨科技有限公司朱云叫邮政EMS收款的。网站是梁...

来自上海市的网友对新闻:行货联保带发票 HTC ONE X团购3299元的评论
假手机,不要买,深圳市涵馨科技有限公司朱云叫邮政EMS收款的。网站是梁...

来自上海市的网友对新闻:行货联保 四核HTC ONE X触底团购2300元的评论
哇,的确很强, 我想买一部

来自美国的网友对新闻:99美元的超级开源电脑Parallella的评论
tm-cat卖假货,媒体报道了梁志军一伙,被公安工商查了

来自上海市的网友对新闻:三星I9300团购价3499元 I9100跌破2600的评论
都说这个显卡玩大型游戏不行,是真的吗

来自上海市长宁区的网友对新闻:什么值得买 送路由联想G470售价3699元的评论
我也来说两句!李燕艳通过多年的努力,一把汗水,一把收获,终于在2012...

来自浙江省金华市的网友对新闻:图文:—亚洲杯举重锦标赛赛况 李燕艳喜获三金的评论
一分耕耘一分收获,李燕艳通过多年的努力,终于在亚州锦标赛58公斤级比...

来自浙江省金华市的网友对新闻:图文:—亚洲杯举重锦标赛赛况 李燕艳喜获三金的评论
即知道有保护伞了那就自认倒霉吧!就象美国为日本出头霸占钓鱼岛一样有...

来自美国的网友对新闻:华山游客被捅伤案告破 犯罪嫌疑人自首的评论

本周十大热点新闻

· 甲骨文CFO:已无必要在云计算领域展
· 苹果总部所在市将降半旗纪念乔布斯
· 微软全线升级Win8内置Metro应用
· 三星第三季度利润73亿美元 同比增长
· 乔布斯辞世一周年:苹果渐行渐远
· 分析师预计三星第三季运营利润68亿
· 惠普CEO惠特曼一语挫伤股价
· iPad mini耳机插孔及排线部件谍照曝
· 英特尔高管:谷歌或是全球第五大服
· 微软平台推广副总裁离职

本周十大争议新闻

· 搜狗输入法,为你开启灵感智慧窗
· 多米尼加女排15岁新秀马丁内斯:待
· iPhone新接口扼住产业咽喉 山寨配件
· 中星微宣布任命代理CFO
· 谷歌董事长祝贺梅耶尔出任雅虎CEO
· 淘宝大卖家等特定人群成黑客目标
· 美国团购行业经历洗牌:成本上涨致
· 俄罗斯国家男子篮球队名单
· 超100公里跑落幕
· 电视游戏的中国达人秀:打造智能电

0 0