PHP的JIT是什么PHP8中确认支持J

一直以来,大家都在讨论PHP8中是否会支持JIT(Just-In-Time)即时编译执行功能,最新消息是官方已经确认将其引入。

JIT的好处

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

目前已经很难通过常规手段提升PHP的性能,JIT基本上是目前性能提升的唯一手段;JIT带来的性能提升可以让PHP在更多使用场景(CPU密集)中发挥作用;可以使用PHP来开发内置函数,而不用担心性能方面的问题。这一方面可以加速语言的发展(更多人可以参与进来),同时也可以减少目前使用C开发容易出现的内存管理、溢出等问题

PHP实现了一个虚拟机ZendVM,它会将人类可读脚本编译成虚拟机理解的指令,也就是操作码,这个执行阶段就是“编译时(CompileTime)”;在“运行时(Runtime)”执行阶段,虚拟机ZendVM会执行这些编译好的操作码。

通常编译时与运行时两个阶段是独立分开的,脚本编译完成后,像APC与OPCache这样的字节码缓存组件会缓存这些操作码。而JIT去掉了编译时阶段,它将这编译时与运行时两个阶段合为一体,实现即时编译与执行。

JIT是一种编译器策略,它将代码表述为一种中间状态,在运行时将其转换为依赖于体系结构的机器码,并即时执行。在PHP中,这意味着JIT将为ZendVM生成的指令视为中间表述,并以依赖于体系结构的机器码执行,也就是说托管代码的不再是ZendVM,而是更为底层的CPU。

虽然自PHP7.0以来,通过优化核心数据结构HashTable、强化ZendVM中某些操作码与持续改进OPCache的Optimizer组件等具体措施,PHP性能得到了显著提升,但是实际上这些优化似乎已经走到极限了。现在JIT从底层着手,被认为是目前提升PHP性能的最佳出路。

关于是否引入JIT的官方投票结果已于近日公布,因为大部分核心开发者投了赞成票,所以PHP8中将会支持JIT。

另外值得一提的是,PHPJIT对于使用PHP的网站来说提速可能并不明显,因为JIT在CPU密集型的代码上效果最好,而一般情况下,用PHP编写的程序都是I/O密集型的。

简单来说就是,PHP程序往往受限于I/O而不是CPU,使PHP代码运行速度变慢的因素往往是它们正在执行的I/O操作,包括连接、读取和写入数据库、高速缓存、文件与套接字等。

PHP中CPU密集型代码的一个例子是Zend/bench.php。

那么PHP中的JIT将会在哪里发挥作用呢?答案是数学领域。

好了,今天就给大家介绍这么多,更多精彩内容继续


转载请注明:http://www.aierlanlan.com/rzfs/1499.html