PHP - 及时编译Vs Interpreter

时间:2012-05-02 10:32:19

标签: php zend-framework compiler-construction

PHP是一种通用的服务器端脚本语言。众所周知,当页面加载并显示结果网页时,将解释php代码。最近我听说过PHP(HipHop虚拟机)的及时编译器。想知道它在执行中会产生什么样的差异,是否更好的是有一个jit而不是解释器?是任何有jit的php引擎吗?

编辑: PHP执行流程是这样的吗?:php code - >解析 - >令牌 - > 字节码/操作码 - > php引擎解释 - >机器代码 - >执行

如果我错了,请告诉我。字节码通常在虚拟机中执行。 Opcode(接近机器语言)可以直接由机器执行。这是否意味着php引擎是一个虚拟机,或者只是它的一些实现是虚拟机?

先谢谢。

1 个答案:

答案 0 :(得分:6)

HipHop不是JIT编译器 - 它是一个将PHP转换为C ++的代码转换器,然后可以使用传统的离线编译器进行编译。

因此,eval和create_function将不起作用,也不会使用tokenizer函数。我没有深入研究过这个问题,但我希望条件/运行时评估包含操作也可能会导致问题。

除非它使代码更快,否则没有多大意义。

使用PHP操作码缓存的OTOH在不影响功能的情况下提供了巨大的性能提升(不如本机代码那么多)。

(考虑到PHP的架构,JIT编译器确实没有多大意义)