请问HHVM 是如何提升 PHP 性能的?
网友回复
php执行代码的过程
php本身是解释性语言,每一次php的请求执行都是zend解释引擎将php代码解释成opcode(操作码),opcode再通过php执行,完整的流程如下:

Opcode是一种PHP脚本编译后的中间语言,就像Java的ByteCode,或者.NET的MSL,如果要提供php的性能,可以对opcode进行缓存,流程就变成下面这个了:

但是opcode不是机器码,他最终还是需要调用c函数,这个也会降低php的性能,那怎么办呢,HHVM出现了。
HHVM是啥?
HHVM(HipHop VM)是Fackbook推出用于在执行PHP代码的虚拟机,是一个PHP的JIT编译器,具有产生快速代码和及时编译的优点。 HHVM为什么比ZendEngine快? HHVM是Facebook开发的高性能PHP虚拟机,宣称比官方Zend快9倍。 PHP使用的Zend虚拟机(VM),首先会先将PHP代码编译成二进制指令opcode,然后逐条执行,每条opcode指令都对应一个C函数。
对于PHP的用户函数、运行时局部变量、常量会存在一个Hashtable中。
执行一次C函数的开销
参数的入栈出栈
CPU寄存器状态保存
例如:在PHP中执行1000w次累加
<?php
$sum = 0;
// 发生1000w次C函数调用
for($i=0; $i<10000000; $i++){
$sum += $i;
}
若编译为机器码情况是什么样的呢? 主频2.0GHZ的CPU每秒执行20亿次指令,函数调用则1秒只能运行1000W次。 因此,编译为机器码执行语言如C、C++、Golang...,或拥有JIT的语言如Java、NodeJS、LuaJIT、HHVM...,单从指令执行角度上看至少比PHP快几十倍。 对于字符串处理、JSON编码解码、iconv编码解码、数组操作等, PHP比C++、Java慢吗? 在PHP中此类操作都是C扩展函数完成的,性能与编译型语言一致。 PHP到底比编译型语言慢的原因在哪里呢? PHP代码中用户函数、类、对象操作等。 运算密集型 vs IO密集型 运算密集型程序指的是需大量执行内存复制操作、循环、运行指令等,瓶颈在CPU上,提升性能的解决方案就是提升CPU硬件配置、改进...
点击查看剩余70%
如何破解绕开seedance2.0真人照片生成视频 限制?
python有哪些算法可以将视频中的每个帧图片去除指定区域水印合成新的视频?
iphone的激光雷达数据能否实时传输到three三维空间中?
豆包sora等ai视频生成大模型生成的视频水印如何去除?
python如何实现在电脑上拨号打电话给手机?
具身机器人与人形机器人区别?
nodejs如何将一个完整的js代码文件切割成不同的部分混淆后动态加载进入html运行?
为啥windows.onerror捕获js错误是这样的{"message":"Script error.","source":"","lineno":0,"colno":0,"stack":null,
2026年ai将全面接管编程?
WebMCP是干啥的?


