5

来自维基百科:

大多数 PHP 加速器通过缓存 PHP 脚本的编译字节码来工作,以避免在每个请求上解析和编译源代码的开销(部分或全部甚至可能永远不会执行)。为了进一步提高性能,缓存的代码存储在共享内存中并直接从那里执行,从而最大限度地减少运行时慢速磁盘读取和内存复制的数量。

及时编译:

JIT 编译器代表了一种混合方法,与解释器一样,翻译是连续发生的,但会缓存已翻译的代码以最大程度地减少性能下降。

因此,在 PHP 上使用诸如 APC 之类的 PHP 加速器对“即时”编译 PHP 的性能具有同等的影响(假设可以这样做)......事实上它们实际上是一样的吗?

4

1 回答 1

5

因此,在 PHP 上使用诸如 APC 之类的 PHP 加速器对“即时”编译 PHP 的性能具有同等的影响(假设可以这样做)......事实上它们实际上是同一件事吗?

相同的概念,不同的执行。

在大多数圈子中提到 JIT 时,它是指将虚拟机字节码编译为原生字节码。例如,Facebook 的HHVM是一个使用JIT 引擎的 PHP 实现。

但是,PHP 的本机虚拟机不对本机字节码执行 JIT。事实上,它根本不做传统意义上的JIT。虽然整个文件都按需编译为PHP 字节码,但这实际上并不是 JIT。

请注意“PHP 加速器”一词。回到 PHP4 时代,PHP 解析器创建的字节码可以进行一些优化以获得更好的性能。从早期的 PHP5 开始就不需要了。APC、Zend“优化器”和其他“加速器”产品为提高 PHP 性能所做的唯一事情就是缓存字节码。不应再使用“加速器”一词来消除歧义。

如果您使用的是标准 PHP,那么您确实需要一个字节码缓存,只是避开那些声称他们尝试进行 PHP 字节码优化的产品。

于 2011-05-09T23:58:38.717 回答