浅谈HHVM
来源:互联网 发布:浙江大学软件学院学费 编辑:程序博客网 时间:2024/05/22 15:48
HHVM(HipHop Virtual Machine)是可以将PHP代码转换成 高级别的字节码(通常被称为中间语言)。
其实HHVM和Java中的JVM或者C#中CLR,在运行时将这些字节码通过即时(JIT)编辑器转换为X64的机器码。
在2008年时,Facebook就开始使用HipHop(HPHP)了,是PHP的一种引擎,最初目的是将大量的PHP代码转换成C++,以提高性能和节约资源,最初的版本也就成为了HPHPC 是一个PHP到C++的编辑器。
之后Facebook又向HipHop中增加了HPHPi和HPHPd,HPHPi其实就是开发版的HPHP,HPHPd则是HipHop的调试器。通过HPHPd开发人员可以单步调试运行在HipHop平台上的PHP代码。还有就是使用HipHop的PHP代码在性能上最大可以是原生的6倍。
但是,第一版的HipHop有不少缺点,具体如下:HPHPc 无法完全支持PHP的所有特性,最典型的是无法支持create_function()和eval()两个函数。Facebook的开发者不得不维护两种不同的引擎(HPHPc和HPHPi),这直接导致了重复劳动和资源浪费。最后,HPHPc部署步骤繁杂,这点很让PHP开发者头疼。最后在2010年的时候Facebook因为这些问题做出了2个重大的决定。首先是将HipHop平台开源,通过这种方式来加快HipHop的发展。其次,Facebook开始开发HipHop的更高版本,也就是HHVM(HipHop虚拟机),HHVM加强了HPHPc的健壮性,同时还修复了许多重要错误。HHVM是在HPHPc的基础上构建,它会将PHP代码转换成高级别的字节码(一种中间语言),在运行时JIT编译器会将这些字节码翻译成机器码。
下面是一些关于字节码、机器码和即时(JIT)编译器的概念。
字节码:是一种人类无法阅读的代码,专门用来给编译器高效执行的。当HHVM首次加载项目时,它会将所有的PHP代码转换成字节码;字节码的生成是与平台无关的。
机器码:是一系列供CPU执行的指令。用过汇编的都应该清楚机器码,估计没人喜欢用汇编编程。通过编译器就可以把汇编转成机器码,然后供CPU处理。
JIT(即时)编译器:即时编译是种软件优化技术,指在运行时才会去编译字节码。字节码会存放在内存中,然后JIT编译器会根据需要加载并编译所涉的字节码。
通过以上技术,HipHop和HHVM获得了性能的提升。
在即将要在成都召开的由CSDN重磅打造的互联网应用架构实战峰会、运维技术与实战峰会 上,也将有百度的胡志广,他将会带来以《支撑百亿级流量PHP引擎HHVM在百度的架构实战》为题的技术分享,内容将会涉及到Baidu为何会使用HHVM、HHVM in baidu、HHVM vs PHP7。
- 浅谈HHVM
- HHVM
- HHVM
- HHVM
- HHVM安装
- HHVM错误
- php+hhvm
- 【HHVM】HHVM中添加扩展的方法
- HHVM of Facebook
- HHVM安装使用教程
- php7 vs HHVM
- HHVM 提升 PHP 性能
- 【HHVM】HHVM中类型和PHP类型的转换
- centos6.3下编译hhvm
- Contos7 编译安装HHVM 3.3
- Debian Wheezy 安装Nginx+HHVM
- CentOS 下安装 HHVM安装
- HHVM和PHP7新性能
- Android学习进阶和IoC
- Android API之ExternalStorage操作
- 成长小计-UIImage、UIButton类扩展
- HDG杭州站报名| 分享华为CCE容器云、CloudOpera IES和视频UI开放架构实践
- Java精确计算小数
- 浅谈HHVM
- 【VirtualBox】不能为虚拟电脑 xxx 打开一个新任务
- base64
- 大数据与数据中心
- cocos2dx - 安卓蓝牙游戏(c++调用)
- Java基础学习总结(43)——Java8 Lambda揭秘
- 二叉树的镜像
- 杭电 Problem - 1997 汉诺塔VII 【递归&规律】
- Ant bulid.xml详解