PHP 是一种通用服务器端脚本语言。众所周知,当页面加载并显示结果网页时,将解释 php 代码。最近我听说了 PHP 的即时编译器(HipHop 虚拟机)。想知道它在执行中会产生什么样的差异,并且使用 jit 而不是解释器更好吗?有没有有 jit 的 php 引擎?
编辑: PHP执行流程是这样的吗?:php代码 -> 解析 -> tokens -> 字节码/操作码 -> php引擎解释 -> 机器码 -> 执行
如果我错了,请纠正我。字节码一般在虚拟机中执行。操作码(接近机器语言)可以被机器直接执行。这是否意味着 php 引擎是虚拟机,或者只是它的某些实现是虚拟机?
HipHop 不是 JIT 编译器 - 它是一个代码转换器,可将 PHP 更改为 C++,然后可以使用传统的离线编译器进行编译。
因此,eval 和 create_function 将不起作用,分词器函数也不起作用。我没有深入研究这个问题,但我预计条件/运行时评估的包含操作也可能会导致问题。
除非它使代码变得更快,否则没有多大意义。
使用 PHP 操作码缓存的 OTOH 在不影响功能的情况下提供了巨大的性能提升(不如本机代码)。
(考虑到 PHP 的架构,JIT 编译器并没有多大意义)