PHP与HHVM的比较 - pingdongyi/blog-2 GitHub Wiki
-
php是弱类型语言,比起强类型语言数据结构会占用更多的内存
-
在执行效率方面
- php语句最快,如isset、echo等
- 其次就是php原生的和拓展的函数,其基本是在zend api之上用c实现的
- 最慢的就是自己写的php代码及函数了,所以用c写的php扩展框架要比纯php写的框架好
所以尽量用原生的接口或拓展来实现自己的逻辑,如果可以的话可以把业务功能写成一个php扩展也会大大提高代码的执行效率
-
zend引擎将php先编译为opcode,然后再逐条执行,通常每条指令对应的是c语言级别的函数,如果有大量重复的opcode,则zend会多次逐条执行这些c代码
- hhvm将php翻译成中间字节码,执行时通过JIT(Just In Time,即时编译是种软件优化技术,指在运行时才会编译字节码为机器码)转为机会码执行。JIT所做的则是更进一步,将大量重复执行的字节码在运行的时候编译为机器码,达到提高执行效率的目的
- hhvm支持hack语法,即可以指定变量的类型,方便虚拟机编译执行
- hhvm服务部署比较复杂,有一定的维护成本
- 对PHP原生代码并非完整支持,PHP拓展也需要做适当的兼容
- HHVM是个新虚拟机,长时间运行有内存泄露,但可以通过自己打Patch的方式解决内存泄露