9

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

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

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

提前致谢。

4

1 回答 1

6

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

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

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

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

(鉴于 PHP 的架构,JIT 编译器并没有多大意义)

于 2012-05-02T10:40:05.303 回答