Dmitry 提交了一个关于将 jit 加入 PHP 的 rfc,看起来已经开发地差不多了(感谢 Dmitry 和鸟哥~)。
下面是 RFC 的大致内容(与原文不完全一致,加入了自己的一些理解)
JIT 的好处
主要是 JIT 带来的性能提升,以及性能提升对整个语言使用场景的扩展及语言生态发展的支持。
- 目前已经很难通过常规手段提升 PHP 的性能,JIT 基本上是目前性能提升的唯一手段;
- JIT 带来的性能提升可以让 PHP 在更多使用场景( CPU 密集)中发挥作用;
- 可以使用 PHP 来开发内置函数,而不用担心性能方面的问题。这一方面可以加速语言的发展(更多人可以参与进来),同时也可以减少目前使用 C 开发容易出现的内存管理、溢出等问题
实现细节
- 作为 OPcache 一个独立组件开发,可以在 PHP 内核编译时或运行时启用,生成的 native 代码保存在 OPcache 共享内存一个额外区域;
- 使用 LuaJIT 的 DynAsm 库实现 native 代码生成,不使用 LLVM 是因为它生成代码的速度太慢了;
- 目前只支持 x86、x86_64 POSIX 平台,未来会提供更多平台的支持;
- 使用 PHP 7.4 跑分,开启 JIT 与不开启,性能大致提升 4 倍 (0.011 sec vs 0.046 sec).
预计的发布节点-
- 在 PHP 7.4 中,作为试验特性加入,默认不开启;
- 在 PHP 8 正式发布