编译器构造 - PHP 加速器与实时编译


compiler construction - PHP accelerator vs Just in Time Compilation

来自维基百科:

大多数PHP

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

及时编译:

JIT 编译器代表一种混合方法,进行转换 连续,与解释器一样,但缓存翻译 代码以最大程度地降低性能。

因此,在PHP上使用PHP加速器(例如APC)对性能的影响与"即时"编译PHP具有等效的影响(假设可以这样做)。事实上,它们实际上是一回事吗?

因此,在PHP上使用PHP加速器(例如APC)对性能的影响与"即时"编译PHP具有等效的影响(假设可以这样做)。事实上,它们实际上是一回事吗?

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

当在大多数圈子里谈论JIT时,它指的是将虚拟机字节码编译为本机字节码。 例如,Facebook的HHVM是一个使用JIT引擎的PHP实现。

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

请注意术语"PHP 加速器"。 回到 PHP4 时代,PHP 解析器创建的字节码可以稍微优化一下以获得更好的性能。 自 PHP5 早期以来就不需要这样做。 APC,Zend"优化器"和其他"加速器"产品为提高PHP性能所做的唯一事情就是缓存字节码。 不应再使用"加速器"一词来消除歧义。

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