17611538698
webmaster@21cto.com

PHP 8.0发布日期和PHP中JIT的状态

资讯 0 16765 2019-04-03 11:57:14
4.3_.3_.1_.jpg

 
 
到目前为止,PHP仍然是用于创建网站的最流行的服务器端语言。

全球估计有80%以上的市场份额,这个二十几岁的编程语言已经无处不在。PHP仍然在发展,接下来的主要内容是PHP 8.0.0和它的JIT(实时)编译。我们来看看这些新东东。

PHP的当前版本是7.0。此版本是一个重要的里程碑,性能显著提高,内存使用率降低。自7.0以来,有两个版本添加了重要功能:2016年的7.1和2017年的7.2版。

PHP 8.0的发布时间尚未确定,但由于这是一个重大的飞跃,它将需要几年时间的等待,这些功能也没有太详细说明,估计需要几年时间。在Twitter上一些人猜测认为PHP 8.0.0的发布将于2021年9月份:
 

2021年9月23日,#PHP 8的发布日期。@ Savara预测它!#SymfonyCon- 拉里加菲尔德(@Crell)


 PHP的实时编译引擎(JIT)

实时编译是一种优化运行代码的方法,它是Java虚拟机(JVM)使用的流行方法,包括Google推出的流行V8 JavaScript VM。这两个语言都使用JIT,但它并不是银弹。
PHP 实现了一个Zend VM,它会将人类可读脚本编译成虚拟机理解的指令,也就是操作码,这个执行阶段就是“编译时(Compile Time)”;在“运行时(Runtime)”执行阶段,虚拟机 Zend VM 会执行这些编译好的操作码。
通常编译时与运行时两个阶段是独立分开的,脚本编译完成后,像 APC 与 OPCache 这样的字节码缓存组件会缓存这些操作码。而 JIT 去掉了编译时阶段,它将这编译时与运行时两个阶段合为一体,实现即时编译与执行。
 
JIT 是一种编译器策略,它将代码表述为一种中间状态,在运行时将其转换为依赖于体系结构的机器码,并即时执行。在 PHP 中,这意味着 JIT 将为 Zend VM 生成的指令视为中间表述,并以依赖于体系结构的机器码执行,也就是说托管代码的不再是 Zend VM,而是更为底层的 CPU。
 
虽然自 PHP 7.0 以来,通过优化核心数据结构 HashTable、强化 Zend VM 中某些操作码与持续改进 OPCache 的 Optimizer 组件等具体措施,PHP 性能得到了显著提升,但是实际上这些优化似乎已经走到极限了。现在 JIT 从底层着手,被认为是目前提升 PHP 性能的最佳出路。
 
关于是否引入 JIT 的官方投票结果已于近日公布,因为大部分核心开发者投了赞成票,所以 PHP 8 中将会支持 JIT。
 
在演进之前的PHP(PHP 7.x)侧重于使用JIT改进PHP性能。这项工作在基准测试中显示取得了相当大的改进,但事实证明,在WordPress或Joomla等应用中几乎没有太大变化。因为 JIT 在 CPU 密集型的代码上效果最好,而一般情况下,用 PHP 编写的程序都是 I/O 密集型的。
 
简单来说就是,PHP 程序往往受限于 I/O 而不是 CPU,使 PHP 代码运行速度变慢的因素往往是它们正在执行的 I/O 操作,包括连接、读取和写入数据库、高速缓存、文件与套接字等。
 
PHP 中 CPU 密集型代码的一个例子是 Zend/bench.php。
 
那么 PHP 中的 JIT 将会在哪里发挥作用呢?答案是数学领域。关于 PHP JIT 的详细介绍,可以查看:
https://blog.krakjoe.ninja/2019/03/php-gr8.html
 
 

小结

JIT和PHP8.0都将在PHP的未来出现,它们都是未来的重要特性。尤其对于JIT而言,PHP的短生命周期对于JIT实现并不是特别理想,这与持续运行的进程语言(如Node.js或Java)相比较。
 

编译:老夏
来源:综合自外媒,开源中国等
 


评论