JIT编译对比AOT编译(附图片)
1)JIT编译
以最新的java JIT为例, JIT编译器默认情况下处于启用状态,并在调用Java方法时被激活。
JIT编译器将需要执行的方法(或代码片段)的字节码,做一个count计数,如果被调用的count计数超过了一个阈值,则解释器会把这个方法(或代码片段)的字节码编译为本地机器代码,顺手缓存并添加索引,完后直接交给cpu运行。编译并索引了该方法(或代码片段)后,JVM下次执行它的时候会直接找到并调用该方法已编译的本地机器代码,而不是对其进行逐行解释为本地机器码再一一交给cpu执行了。
注意到JIT中涉及到的统计,编译和缓存都是在程序运行时进行的,所以该编译被称作为just in time编译。
那么能不能把这些都放在程序运行之前,来进一步提升执行效率呢? 答案是肯定的。
2)AOT编译
java9就已经开始支持AOT编译了,你只需要把一个字节码文件把交给编译器,它就可以在执行之前编译成so文件,
在真正执行程序的时候,只需要把这个编译好的so文件配置成AOT库,就可以了。如下图:
随之而来的缺点也就出现了,那就是AOT之后的程序不再支持跨平台了,所以使用时还需要进行性能和兼容性的权衡才好。
JIT编译对比AOT编译(附图片)相关推荐
- java jit aot_JIT和AOT编译详解
JIT和AOT编译介绍 JIT - Just-In-Time 实时编译,即时编译 通常所说的JIT的优势是Profile-Based Optimization,也就是边跑边优化 ...
- JIT编译和AOT编译
JIT(just in time) 实时编译,即时编译. Profile-Based Optimization,边跑边优化,根据运行时信息然后随着时间的推移得到尽可能优化的代码,适用于开发调试. AO ...
- 前端编译、JIT编译、AOT编译
一.前端编译: java设计之初就是强调跨平台,通过javac将源文件编译成于平台无关的class文件, 它定义了执行 Java 程序所需的所有信息(许多Java"语法糖",是在这 ...
- java aot jit xcomp,使用 AOT 编译
什么是 tfcompile? tfcompile 是一个可将 TensorFlow 计算图提前 (AOT) 编译为可执行代码的独立工具.它可以缩减二进制文件的总大小,也可以避免一些运行时开销.tfco ...
- JIL 编译与 AOT 编译
JIT:Just-in-time compilation,即时编译:AOT:Ahead-of-time compilation,事前编译. JVM即时编译(JIT) 1. 动态编译与静态编译 动态编译 ...
- JIT和AOT编译详解
JIT和AOT编译介绍 JIT - Just-In-Time 实时编译,即时编译 通常所说的JIT的优势是Profile-Based Optimization,也就是边跑边优化 ...
- Java编译分类:前端编译和后端编译
ava程序代码需要编译后才能在虚拟机中运行,编译涉及到非常多的知识层面:编译原理.语言规范.虚拟机规范.本地机器码优化等:了解编译过程有利于了解整个Java运行机制,不仅可以使得我们编写出更优秀的代码 ...
- android将引入aot编译器,Android N混合使用AOT编译,解释和JIT三种运行时
Android N引入了我们一种主要包含编译.解释和JIT(Just In Time)的混合系统运行时,以便在安装工作时间.内存占用.电池材料消耗和性能指标之间可以获得发展最好的折衷. ART在And ...
- android将引入aot编译器,JIT与AOT编译模式
JIT,即Just-in-time,动态(即时)编译,边运行边编译: AOT,Ahead Of Time,指运行前编译,是两种程序的编译方式 JIT JIT,即"Just In Time ...
- java aot,Java三种编译方式: 前端编译 JIT编译 AOT编译
java程序代码需要编译后才能在虚拟机中运行,编译涉及到非常多的知识层面:编译原理.语言规范.虚拟机规范.本地机器码优化等:了解编译过程有利于了解整个Java运行机制,不仅可以使得我们编写出更优秀的代 ...
最新文章
- CentOS 7 安装 PostgreSQL 教程
- Silverlight2.0中与Html页面元素互操作.
- Python Flask实现查询和添加数据
- 阿里云数据库产品专家胡航丽:数据库自动驾驶平台DAS重磅助力数据库领域智能未来...
- java数组移除对象_如何从Java数组中删除对象?
- leetcode-461-Hamming Distance
- linux系统文件系统个目录介绍,关于linux的文件系统目录详细介绍
- mac和jar的关系
- 【软考 系统架构设计师】案例分析① 解题技巧
- LowB三人组--插入排序原理和java实现
- Python 三维姿态估计+Unity3d 实现 3D 虚拟现实交互游戏
- Ubuntu系统上编译和安装perl和cpan模块
- 哈尔滨理工大学matlab,微软用户-Matlab软件简介哈尔滨理工大学数学建模组ppt课件...
- 爱莫科技升级KISS人工智能算法平台,更好赋能实体零售
- 正则表达式替换某个字符
- 定时器中断控制LED闪烁(每隔1s)---普中科技开发仪
- vue子组件通过.sync修饰符修改props属性
- python -- 计算 平方,乘方,平方根
- 想要提高数据分析能力,就要注意以下四点
- Halo博客网站添加天气插件
热门文章
- [环境搭建]Windows下安装Ruby和Jekyll
- java带参数的方法笔记_Java学习笔记十一:Java中的方法
- CF1399A Remove Smallest
- AGC022E Median Replace
- rsync结合inotify工具实现实时同步传输文件
- linux命令行添加管理员用户,Linux基础命令---添加用户useradd
- python显示文字框_python如何使用文本框
- php通过mysqldump数据库备份,mysql使用mysqldump进行数据库备份_MySQL
- python里isalpha_Python 2.7中isalpha 不支持 unicode
- python中33个保留字的含义_Python的保留字。这是什么意思?