HHVM到底是何方神圣 [ 新手入门 ]
HHVM (HipHop Virtual Machine)会将PHP代码转换成高级别的字节码(通常称为中间语言),在运行时,通过即时(JIT)编译器将字节码转换为x64的机器码。在这些方面,HHVM十分类似于C#的CLR和Java的JVM。
早在2008年,Facebook就开始使用HipHop(现在成为HPHP),这是一种PHP执行引擎。最初是为了将Fackbook的大量PHP代码转成C++,以提高性能和节约资源。
最初的版本成为HPHPc,是一个PHP到C++的编译器。
之后的两年里,Facebook又向HipHop中增加了HPHPi和HPHPd,HPHPi其实就是开发版的HPHP, HPHPd则是HipHop的调试器。
通过HPHPd开发人员可以单步调试运行在HipHop平台上的PHP代码。
使用HipHop的PHP代码在性能上最大可以是原生的6倍。
但是,第一版的HipHop有不少缺点: (1)HPHPc 无法完全支持PHP的所有特性,最典型的是无法支持create_function()和eval()两个函数。 (2)Facebook的开发者不得不维护两种不同的引擎(HPHPc和HPHPi),这直接导致了重复劳动和资源浪费。 (3)HPHPc部署步骤繁杂,这点很让PHP开发者头疼。
在2010年初,Facebook因为这些问题做出了两个重大的决定:
首先是将HipHop平台开源,通过这种方式来加快HipHop的发展。
其次,Facebook开始开发HipHop的更高版本,也就是HHVM(HipHop虚拟机),HHVM加强了HPHPc的健壮性, 同时还修复了许多重要错误。
HHVM是在HPHPc的基础上构建,它会将PHP代码转换成高级别的字节码(一种中间语言), 在运行时即时(JIT)编译器会将这些字节码翻译成机器码,通过以上技术,HipHop和HHVM获得了性能的提升。
字节码:是一种人类无法阅读的代码,专门用来给编译器高效执行的。 当HHVM首次加载项目时,它会将所有的PHP代码转换成字节码;字节码的生成是与平台无关的。
机器码:是一系列供CPU执行的指令。用过汇编的都应该清楚机器码,估计没人喜欢用汇编编程。 通过编译器就可以把汇编转成机器码,然后供CPU处理。
JIT(即时)编译器:即时编译是种软件优化技术,指在运行时才会去编译字节码。字节码会存放在内存中, 然后JIT编译器会根据需要加载并编译所涉的字节码。
最近,HHVM几乎已经完全支持PHP 5.4了,但还是有不少bug,所以不是所有应用程序都可以运行。 因此,Facebook准备让最流行的20个开源PHP项目能够运行在HHVM上。第一个已经支持的项目就是Wordpress。
共 0 条回复
PHP学院的中学生
最后登录:2024-09-23
在线时长:168小时13分
- 粉丝29
- 金钱4725
- 威望30
- 积分6705