Facebook已将HHVM/JIT用于其开发和产品中

标签: facebook hhvm jit | 发表时间:2012-12-03 16:47 | 作者:
出处:http://pipes.yahoo.com/pipes/pipe.info?_id=10560380f804c7341f042a2b8a03e117

Facebook宣布,他们已经在产品中使用了 HHVM这款支持JIT编译的HipHop虚拟机,这种方案统一了开发和部署两种环境,同时为开发者带来了显著的性能收益。

因为页面加载的性能问题,Facebook决定实现一套从PHP向C++转换的工具链, 该工具链即 HipHop PHP,已于2010年开源,其中的编译器称为HPHPc。该工具将PHP转化为一种抽象语法树(Abstract Syntax Tree,AST),之后AST被转化为C++代码,最后静态编译为x64二进制代码。虽然这种方案能够加速Web页面,但是也给开发带来了一个问题,由于Facebook 的所有开发者都有网站代码的一份完整拷贝,在开发时他们必须等待整个代码库编译完成。Facebook的工程总监David Mortensen在 QCon SF 2012上讨论HPHPc时提到,因为网站以很高的速率持续增长,编译阶段延长到了十分钟左右,大量开发人员都要等待。

为了解决该问题,Facebook做出以下决定:在产品代码中仍然使用编译器,同时为开发代码创建一个解释器(HPHPi),希望此举能消除编译停滞时间。这又使产品环境与开发环境出现了差异,其中存在一个问题,出于性能考虑两种环境使用了不同的AST,而且据Facebook的工程师 Drew Paroski介绍, HPHPi甚至比引入HipHop之前的原始Zend引擎还要慢

面对这个新问题,Facebook 的一个工程师小团队设计了一款名为HHVM(HipHop VM)的虚拟机,而且 自2011年起就将其应用于开发中了。在对JIT进行了几个月的调校之后,HHVM被引入了产品中,用于执行已部署的代码。Paroski宣布, HHVM的性能已经赶上了HPHPc,甚至在页面加载时间上的表现还要好一点。这意味着,在Facebook开发和部署可以使用统一的环境了;而且随着JIT引擎的进一步调校,性能还有改进空间。Paroski指出:

利用HHVM,从运行时和基本库,到生成的裸机机器代码,我们能够为PHP开发栈选择范围更广的优化策略了。在未来几年,我们计划利用这种灵活性让Facebook的Web层更为高效。

能够持续改进HipHop的开发体验,我们也非常兴奋。改进主要体现在两个方面,一个是安装和开发流程更容易且更灵活了,另一个是支持的流行PHP 应用和框架越来越多了。

目前HipHop是一种混合环境,其中部分代码解释执行,但大部分代码以JIT方式编译执行。据Paroski介绍:

HHVM这样运行PHP程序,先将PHP源代码转换为HipHop字节码( HHBC),然后使用字节码解释器和x64 JIT编译器来执行字节码。这里的解释器和编译器可以无缝地进行互操作。HHVM会尽可能使用JIT,万不得已时才将解释器作为执行引擎。

Facebook现在已将 HHVM开源,同时弃用了HPHPi并移除了对它的构建支持。到2013年中期,他们将不再支持 HPHPc。HHVM提供了 支持Ubuntu 12.04的预构建包以及 支持CentOS 6.3的构建说明,而对FreeBSD 9和Mac OS的支持将于明年HPHPc退役之后再提供。

查看英文原文Facebook Now Uses HHVM/JIT both in Development and Production

您可能也会喜欢

相关 [facebook hhvm jit] 推荐:

Facebook已将HHVM/JIT用于其开发和产品中

- - InfoQ cn
Facebook宣布,他们已经在产品中使用了 HHVM这款支持JIT编译的HipHop虚拟机,这种方案统一了开发和部署两种环境,同时为开发者带来了显著的性能收益. 因为页面加载的性能问题,Facebook决定实现一套从PHP向C++转换的工具链, 该工具链即 HipHop PHP,已于2010年开源,其中的编译器称为HPHPc.

Java JIT编译技术

- - 小彰
        JIT是just in time,即时编译技术. 使用该技术,能够加速java程序的执行速度. 下面,就对该技术做个简单的讲解.         首先,我们大家都知道,通常javac将程序源代码编译,转换成java字节码,JVM通过解释字节码将其翻译成对应的机器指令,逐条读入,逐条解释翻译.

HHVM 是如何提升 PHP 性能的?

- - 码农网
HHVM 是 Facebook 开发的高性能 PHP 虚拟机,宣称比官方的快9倍,我很好奇,于是抽空简单了解了一下,并整理出这篇文章,希望能回答清楚两方面的问题:. 它为什么比官方的 PHP 快很多. 在讨论 HHVM 实现原理前,我们先设身处地想想:假设你有个 PHP 写的网站遇到了性能问题,经分析后发现很大一部分资源就耗在 PHP 上,这时你会怎么优化 PHP 性能.

Java HotSpot VM中的JIT编译

- - 并发编程网 - ifeve.com
原文地址 译者:郭蕾 校对:丁一. 本文是Java HotSpot VM and just-in-time(JIT) compilation系列的第一篇. Java HotSpot虚拟机是Oracle收购Sun时获得的,JVM和开源的OpenJDK都是以此虚拟机为基础发展的. 如同其它虚拟机,HotSpot虚拟机为字节码提供了一个运行时环境.

JS特性性能缺陷及JIT的解决方案

- - 博客园_首页
        拜读了David的《 Know Your Engines: How to Make Your JavaScript Fast》,David是Mozilla的JS引擎工程师,文章主要介绍了JIT与GC原理,以及如何根据某些基本原理,优化js代码的执行效率,虽然是老文了,但对我来说仍受益匪浅.

中国的Facebook?

- Lorna - It Talks--上海魏武挥的博客
腾讯近日很低调地推出了一个名为“朋友”的网络服务(也是一个使用独立域名的网站),这是一个与时下社交网站,比如人人、开心等非常类似的产品. 与它们一样,目前这个“朋友”上也加载了一些应用,当然,一贯的,以腾讯自家出品为主. 而且,我个人以为,未来会有更多的腾讯在QQ这个客户端上的应用,逐步向这个网站迁移.

Facebook初探

- 亦农 - 王建硕
今天的湾区阳光灿烂,280州际公路两边的绿色山坡和蔚蓝的白云,让人觉得自己是Windows XP桌面上的一个图标. 下午,2点,终于来到Facebook这个神奇的公司. 他们的新家在南加利福尼亚街的最里面,一幢两层的楼里. 他们刚刚从车位紧张的Palo Alto城里搬到这里,据说一层楼又要搬了. 我好像是他们再次搬地方前的最后一批访客.

Facebook败给Foursquare

- We_Get - GeekPark 捕风捉影
除了我们熟知的QQ,互联网世界里以自身强大资源来复制小公司的产品和服务的事,绝不少见. 去年8月份,Facebook推出了Facebook Places,这是一个类似Foursquare的基于地理位置的手机在线签到功能. Foursquare当时是社交网站新贵,几个月以后它成了代表着全球互联网方向中的SoLoMo中的Lo—Location.

Facebook的标语

- - 阮一峰的网络日志
Facebook即将 上市,一时之间成为全球新闻热点. 为了不错过商机,有人将Facebook内部的标语做成 海报,每张20美元,放到网上卖. 据说,从扎克伯格创业初期,这些标语就贴在Facebook的办公室,作为行动准则,激励员工. 虽然这些标语很简单,但是我发现,它们真的具有警醒的效果,能指导你做出正确的事.

读facebook效应

- - 搜索引擎技术博客
     我的一位室友说:“嘿,我来帮你”. 我回答他:“兄弟,你不会编程”,然后他周末回家买了一个perl编程入门的书,告诉我‘我现在准备好了’. 我就说;“兄弟,网站不是用perl语言编写的”.      我们并不想让用户在网站停留尽可能长的时间,我们所做的是让人们可以在网站用户好的体验,使他们在上面所花的时间有价值.