PHP-8.4/9 的新 JIT 引擎


一个新的 JIT 引擎,它将在下一个主要 PHP 版本中使用。现在它是一个真正的优化编译器,具有类似于 Java HotSpot 服务器编译器的中间表示,V8 也使用非常相似的 IR 和编译管道。

它为未来的改进奠定了基础,并消除了现有 PHP JIT 的许多低级细节。

它不再支持不同 CPU 的汇编代码,现在,PHP 只生成一个 IR,并将其传递给一个独立于 PHP 的 JIT 引擎。

旧的 JIT 实现将保留一段时间。

新 JIT 实现的主要优点

  • 使用 IR 可以更好地优化和分配寄存器(生成的本地代码更高效)。
  • 分配的可能性(由此产生的本地代码效率更高)
  • PHP 不必关心大多数底层细节(不同的 CPU、调用约定、TLS 细节等)、
  • 调用约定、TLS 细节等)
  • 更容易实现对新目标的支持(如 RISCV)
  • IR 框架将与 PHP 分开开发,并可能接受其他项目的贡献(新的优化、改进、错误修复)。

缺点

  • JIT 编译速度变慢(这对于跟踪 JIT 几乎是不可见的,但对于函数 JIT 编译则是可见的)。
  • 但 Wordpress 的功能 JIT 编译速度要慢 4 倍)。

IR Framework 作为 GIT 子模块包含在 PHP 中。

相关:

  • 一个新的独立于 PHP 的IR JIT 框架,:主要基于 HotSpot 和 LuaJIT 的想法。这些想法和实用方法的结合使其变得更加简单并且速度显着加快(PHP 函数 JIT 每秒生成 15M 优化的本机代码,基于 LLVM 的 PHP JIT 完成相同的工作超过一分钟)。这个框架可以用于其他语言,同时实现对许多PHP VM特定事物的支持。