PHP 8 确认支持 JIT
一直以来,大家都在讨论 PHP 8 中是否会支持 JIT(Just-In-Time)即时编译执行功能,最新消息是官方已经确认将其引入。
Include JIT into PHP 8? | ||
---|---|---|
Real name | Yes | No |
ab (ab) | ||
ashnazg (ashnazg) | ||
beberlei (beberlei) | ||
brandon (brandon) | ||
bwoebi (bwoebi) | ||
carusogabriel (carusogabriel) | ||
cmb (cmb) | ||
cpriest (cpriest) | ||
dams (dams) | ||
danack (danack) | ||
derick (derick) | ||
diegopires (diegopires) | ||
dmitry (dmitry) | ||
duncan3dc (duncan3dc) | ||
emir (emir) | ||
galvao (galvao) | ||
guilhermeblanco (guilhermeblanco) | ||
jhdxr (jhdxr) | ||
jmikola (jmikola) | ||
jpauli (jpauli) | ||
jwage (jwage) | ||
kalle (kalle) | ||
klaussilveira (klaussilveira) | ||
krakjoe (krakjoe) | ||
laruence (laruence) | ||
lcobucci (lcobucci) | ||
levim (levim) | ||
malukenho (malukenho) | ||
mariano (mariano) | ||
mbeccati (mbeccati) | ||
mike (mike) | ||
narf (narf) | ||
neeke (neeke) | ||
nikic (nikic) | ||
ocramius (ocramius) | ||
pajoye (pajoye) | ||
peehaa (peehaa) | ||
petk (petk) | ||
pmmaga (pmmaga) | ||
pollita (pollita) | ||
remi (remi) | ||
reywob (reywob) | ||
rtheunissen (rtheunissen) | ||
salathe (salathe) | ||
sammyk (sammyk) | ||
stas (stas) | ||
svpernova09 (svpernova09) | ||
tianfenghan (tianfenghan) | ||
wjx (wjx) | ||
yunosh (yunosh) | ||
zeev (zeev) | ||
zimt (zimt) | ||
Final result: | 50 | 2 |
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 JIT 对于使用 PHP 的网站来说提速可能并不明显,因为 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
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Go 语言 2018 调查报告发布
Go 官方博客今天公布了2018 年 Go 语言调查报告。参与本次调查的 5883 名受访者来自 103 个不同的国家,官方表示,这些受访者的反馈意见将被选取用于改进Go 语言的发展。 知道大家都很忙,先直接看一下调查报告摘要: 首次有一半的受访者表示Go 是他们日常使用的编程语言之一。此外,在工作中用到Go 语言以及在工作之余使用 Go 语言的受访者人数也显著增加。 Go最常见的用途仍然是编写API/RPC 服务和 CLI 工具。虽然用于自动化任务领域不像前两者那么常见,但也处于快速发展阶段。 Web 开发仍然是受访者最普遍的工作领域。与此同时,DevOps 保持着年度最高的同比增长率,整体比例仅次于 Web 开发。 绝大多数受访者表示 Go是他们最喜爱的编程语言,尽管熟练度不如其他语言高。 VS Code 和 GoLand 越来越受开发者欢迎,两者都是他们最喜爱的编辑器。 许多 Go 开发者的主力开发系统不止一个—— Linux 和 macOS 尤其受欢迎。大多数受访者表示使用这两者之一或全部来编写 Go 代码。 受访者正在逐渐放弃在将 Go 应用程序部署到本地,转而选择容器和无服...
- 下一篇
甲骨文通知用户需付费取得 Java 8 更新
近日甲骨文(Oracle)销售代表向一些用户发送了电子邮件,称 Java 8 即将发布的重大安全更新仅提供许可用户使用,但该邮件的措辞让一些用户联想到勒索和恐吓策略。 甲骨文早在今年 1 月份就停止了 Java 8 更新的免费支持。如果无有效的许可证,用户就不能将 Java 8 SE 的安全更新应用于商业或商业用途。 据收到邮件的站长 Alex Rice 描述,邮件通知他 Java 8 第一次、非公开的季度重大修补更新将在 4 月 16 号发布。届时,没有获得授权的用户将无法获得推送。该邮件表示:“如果不安装这些更新,你的服务器和桌面环境将暴露在危险中,容易遭受攻击”。 △ 甲骨文发给用户的电子邮件,想确保企业用户在过渡期间拥有足够的信息 此前甲骨文已宣布 Java 8 未来的更新只适用于已付费的许可证持有者,并出于迁移难度的考虑延长了对 Java 8 的免费支持时间,为用户提供了一段缓冲的时间。从今年 4 月份开始,甲骨文会每季度会发布一次 Java 8 的重大修补更新。 这么说,甲骨文向企业级用户收费也是合情合理。但 Rice 表示,他跟甲骨文从来没有过生意往来,收到电子邮件这件事...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS7安装Docker,走上虚拟化容器引擎之路
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS6,CentOS7官方镜像安装Oracle11G
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- Hadoop3单机部署,实现最简伪集群
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- CentOS关闭SELinux安全模块
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- SpringBoot2整合Thymeleaf,官方推荐html解决方案