宽屏模式

PHP8的JIT(即时编译)编译器

今天在某短剧公司面试时, 与面试官聊到了PHP8 新特性中的 JIT 编译器, 聊到 JIT 时,他说 JIT 的到来, 使得 PHP 能够编译成二进制运行, 这让PHP有了和Java等语言一较高下的资本, 想起自己当初 看到这个特性后, 当时想法就是: 恩!更快了!好好好!~, 就没有了, 确实没有更深一步的思考 JIT 对于 PHP 究竟意味着什么? 现在再重新查看 JIT 及其原理, 确实是跨时代的一个更新!

JIT编译器

在 PHP8 中, JIT 编译器是作为扩展集成在 php 的 Opcache 扩展中的, 在运行时, 将某些代码直接编译为CPU指令.

PHP 解释器流程:

  1. Lexing/Tokenizing ---- 读取PHP代码, 将其解释为 Tokens 关键字.
  2. Parsing ----- 拿到Tokens集合后 解析, 生成抽象语法树(AST, 节点集, 表示要执行哪些操作)
  3. compilation ------ 将 AST 转换为 Opcodes (可以被CPU执行的操作的一个表达式)
  4. executing ----- PHP 的 Zend VM 引擎 接收 Opcodes 并执行它们.

opcache 扩展

opcache 扩展存在,就是可以让PHP代码在解析后,缓存下来, 不必每次都重新解析.

JIT 优化 Opcache 的原理

待续.....

参考: PHP JIT 是什么?PHP8 新特性之 JIT 图文详解PHP

Larwas
请先登录后发表评论
  • latest comments
  • 总共0条评论