期待已久的 PHP 的 JIT 终于要来了

时间:2019-02-11
本文章向大家介绍期待已久的 PHP 的 JIT 终于要来了,主要包括期待已久的 PHP 的 JIT 终于要来了使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

https://wiki.php.net/rfc/jit

Dmitry 提交了一个关于将 jit 加入 PHP 的 rfc,看起来已经开发地差不多了(感谢 Dmitry 和鸟哥~)。

下面是 RFC 的大致内容(与原文不完全一致,加入了自己的一些理解)

JIT 的好处

主要是 JIT 带来的性能提升,以及性能提升对整个语言使用场景的扩展及语言生态发展的支持。

  1. 目前已经很难通过常规手段提升 PHP 的性能,JIT 基本上是目前性能提升的唯一手段;
  2. JIT 带来的性能提升可以让 PHP 在更多使用场景( CPU 密集)中发挥作用;
  3. 可以使用 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 正式发布