PHP 8 中确认支持 JIT!
一直以来,大家都在讨论 PHP 8 中是否会支持 JIT(Just-In-Time)即时编译执行功能,最新消息是官方已经确认将其引入。
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。
本文经授权转自开源中国(ID:oschina2013)。
热 文 推 荐
☞贾跃亭吹过的牛,苹果来实现?
☞一行代码引发的恐惧
☞Google 产品的消亡史!
☞@程序员,你会教自己的孩子学习编程吗?
☞代码重构!你敢吗?!
☞30位90后霸榜! 福布斯: 比你年轻、比你有颜、比你有才华, 就是他们了!
☞Facebook开源图嵌入“神器”:无需GPU,高效处理数十亿级实体图形 | 极客头条
☞OpenStack已死?恐怕你想多了 | 技术头条
☞刺激!我31岁敲代码10年,明天退休!
System.out.println("点个在看吧!");
console.log("点个在看吧!");
print("点个在看吧!");
printf("点个在看吧!\n");
cout << "点个在看吧!" << endl;
Console.WriteLine("点个在看吧!");
Response.Write("点个在看吧!");
alert("点个在看吧!")
echo "点个在看吧!"
你点的每个“在看”,我都认真当成了喜欢
PHP 8 中确认支持 JIT!相关推荐
- PHP 8 确认支持 JIT
百度智能云 云生态狂欢季 热门云产品1折起>>> 一直以来,大家都在讨论 PHP 8 中是否会支持 JIT(Just-In-Time)即时编译执行功能,最新消息是官方已经确认将其 ...
- android 北斗定位代码_iPhone 11 确认支持北斗导航,真相来了!
点击 哎咆科技 关注我们 最近"北斗"火了. 因为7月31日,北斗三号全球卫星导航系统正式开通.截止8月7日,微博话题"北斗三号全球卫星导航系统正式开通"已有5 ...
- 要求在ASP.NET Core 2.2中确认电子邮件——第2部分
目录 介绍 使用代码 先决条件 步骤1--将UnconfirmedEmail属性添加到IdentityUser 第2步--更新数据库 第3步--添加更改电子邮件页面 第4步--修改配置文件 第5步-- ...
- 关于CFree5.0中设置支持C99模式
关于C-Free5.0中设置支持C99模式,分为以下几个步骤: 1.打开C-Free5.0,在左上角找到'构建(B)' 2.展开'构建(B)',点击最下方的'构建选项' 3.在'编译'一栏看到红色框区 ...
- java项目打包提示-source1.5中不支持diamond
maven项目打包提示-source1.5中不支持diamond IDEA解决办法: 方法一: idea左上角settings> Build, Execution, Deployment> ...
- 俄罗斯总统确认支持自由软件
<!-- @page { size: 21cm 29.7cm; margin: 2cm } P { margin-bottom: 0.21cm } --> 2月23日,Glyn Moody ...
- Seam的中文化支持
一.预备知识 Seam的中文化支持是通过资源包文件来实现的.资源包是Java属性元数据格式的一种应用,它以键/值对的形式保存元数据.这些键/值对按照一定的规则进行分组,并绑定到某个bundle名称下. ...
- java中是否支持多重继承_java支持多重继承吗 JAVA特性面试题:
1.简要介绍java程序的健壮性. 答:JAVA程序会在编译和运行的时候自动的检测可能出现的错误,而且它是一种强类型语言,对于类型的检查很严格,而且它的垃圾回收机制也有效的避免了内存的泄漏. 2.为什 ...
- maven install 报错 source 1.5 中不支持 lambda 表达式
maven install 报错 source 1.5 中不支持 lambda 表达式 maven-compiler-plugin 在编译的时候如果不指定jdk的版本,会默认使用jdk1.5 所以在编 ...
最新文章
- confluence 编辑器这次没有加载_代码编辑器横评:为什么 VS Code 能拔得头筹
- OpenCV图像识别初探-50行代码教机器玩2D游戏
- 哔哩哔哩公布2021年度弹幕:“破防了”
- vnc连接服务器怎么修改配置,vnc连接服务器怎么配置
- 近一半程序员单身、年薪低于 15 万,程序员扎心现状大调查!
- sql server中的注释快捷键
- 沟通CTBS V5.0发布, 南北通及安全性成最大亮点
- ios 去掉cell最后一条分割线
- 判断某个值是否存在指定枚举类中
- 日常Java练习题(每天进步一点点系列)
- DataParallel使用
- 软件测试知识点 fiddler抓包教程
- (转)74系列芯片使用汇总
- Java中serialVersionUID作用
- Android集成FBReader(精简版)指南
- 二十五、PHP内核探索:常量的实现 ☞ 脱离C语言和数学讨论底层都是耍流氓
- 《中华颂》朗诵比赛准备
- 聚观早报 | ChatGPT 停止 Plus 付费;李子柒油管广告收益登顶热搜
- cocos2d_lua 2.5D
- 笔记本安装固态涉及到的注意事项
热门文章
- 【docker】【pycharm】pycharm配置docker远程连接
- leetcode python3 简单题28. Implement strStr()
- linux系统安装自主分区,Linux系统的安装(自动引导安装、网络安装、分区选择)...
- n进制快速转化成10进制
- Flutter实战一Flutter聊天应用(二十)
- 碱度控制化学品行业调研报告 - 市场现状分析与发展前景预测
- 两级压缩机行业调研报告 - 市场现状分析与发展前景预测
- 做游戏,学编程(C语言) 11 2048
- “开发者有奖大调查”第二批中奖名单公布,还有更多好礼等你来拿~
- 重识 SQLite,简约不简单