开发者社区> 问答> 正文

[@炯轩][¥20]面对即将发布的php jit版本,会大大的增加php的运行效率,java会做这方面的探索吗

已解决

面对即将发布的php jit版本,会大大的增加php的运行效率,java会做这方面的探索吗

问题来自Java技术沙龙的金超健
Java线下沙龙报名链接:https://yq.aliyun.com/activity/796

展开
收起
管理贝贝 2018-11-30 13:13:54 2694 0
2 条回答
写回答
取消 提交回答
  • 7年安卓研发经验,108项安卓相关国内外发明专利,曾主导知名开源插件化项目的研发。现在高德从事动态化(JS + Native)方向的工作
    采纳回答

    作为Android移动端和准前端的研发,可能我并非PHP问题的最佳回答者。不过我可以试着从自己对 Java 和 Android 的理解,来解答您的问题。

    考虑到 Java 在很早以前就支持了 JIT(Just In Time),性能收益、稳定、成熟度都得到了大量的验证,所以我理解您提到的“Java 会做这方面的探索吗”,应该针对的是“Java 是否还会进一步优化性能,以使得自己更有竞争力”吧。

    我的答案是,会的,而且在持续进行。

    例如最新的 Java 10,引入了一种叫“应用类数据共享”——Class Data Share 特征。一句话概括,就是允许多个进程「共用」「应用」的ClassLoader(原来是每个 JVM 进程一个,除了系统的 BootClassLoader 外),这不仅能显著提高启动时间,还能有效减少内存占用。而且更奇妙的是,整个过程可以做到「近乎无感知」,都是由 JVM 自行分析来实现。当然,CDS 的功用不仅于此。

    此外,Java 9 引入了 Android 在几年前就有的 AOT(Ahead Of Time)能力,可以在运行前(例如安装过程中)就做一次“预编译”,编译成机器码并直接运行(近似于 C++ 编译的应用),基本上干掉了以前的“运行期解释”过程(当然,从 Android 7.0 版本开始,为了安装速度考虑而做了些优化)。而 Java 10 还进一步引入了新的 JIT 编译器 —— Graal,其灵活的模块架构、高可维护性,使其带上了“未来能和C++性能比肩”的光环。

    其实,参考下 Android 的经验就会发现,作为移动设备的「头牌」平台,Android 可以说是「Java 性能」的极致优化的体现。例如:用「Fork」来创建 JVM 进程,省去了 JVM 和 Android 系统类的初始化时间;最早引入了 Dalvik、ART,进一步降低内存占用和功耗,等等不一而足。而看到了 Android 对低端设备的性能的努力,就能看到 Java 未来的性能方向。

    补充:如果从「更长远」的时间线上考虑,随着硬件性能的不断提升,成本的不断降低,也许有一天,性能问题将不再成为问题。一如现在「动态化」和 H5 会成为主流一样(而在当年,就性能问题而言,想都不敢想)。也许10年后回看今天(的历史),会感觉非常有意思吧。共勉。

    2019-07-17 23:17:25
    赞同 1 展开评论 打赏
  • PHP 7 之后会有什么 —— JIT
    这是一个十分值得我们期待的版本,目前由 Zend 引擎的 Dmitry Stogov 主导。虽然它是基于 PHP 7.1 版本,但实际版本号尚未确定。

    JIT 是什么?为什么是 JIT?
    JIT (Just-In- Time 即时编译) 并非是新技术,很多语言例如 Java 早已实现。JIT 的思想很简单,即在程序运行时动态对程序进行编译,生成平台相关的机器码(比如运行它的机器 CPU 的本地代码),从而加快程序的运行速度。

    为什么是 JIT?

    不妨先来看看 PHP 文件的执行流程。PHP 文件的执行流程大致是首先引擎加载 PHP 文件,解释器逐条解释执行代码。

    引入 JIT 后,前面部分一样,重点是 JIT 编译器会根据 Runtime 信息对热点代码进行动态编译生成机器码,此后这部分代码就可以直接执行,不再需要解释器逐条解释执行,因此运行效率会得到提升。

    2019-07-17 23:17:25
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
Spring Cloud Alibaba - 重新定义 Java Cloud-Native 立即下载
The Reactive Cloud Native Arch 立即下载
JAVA开发手册1.5.0 立即下载