JIT与AOT

本文详细对比了JIT(Just-In-Time)实时编译和AOT(Ahead-Of-Time)预先编译的优缺点,如JIT的动态优化和内存占用,AOT的流畅运行和更新缓慢。方法内联是JIT优化的一种,能提高性能但增加内存消耗。AOT适用于客户端APP,JIT则更适合服务器端。开发者可根据项目需求选择合适的编译方式。
摘要由CSDN通过智能技术生成

名词解释:
JIT(JUST - IN -TIME)实时编译
AOT(AHEAD-OF-TIME)预先编译

它们两者最根本的区别,就在于编译代码的时机,所谓的编译代码,就是把人类写的代码,翻译成机器字节码指令这么一个过程。

优缺点:

JIT优点:

1·可以实时根据硬件资源情况实时编译生成最优指令。
2·能实现动态链接,动态编译加载需要用到的模块代码,节省内存空间
3·能通过程序运行中内存和磁盘空间使用率情况,定位代码优化点(这是AOT无法做到的)

JIT缺点:

1·边运行边编译,会造成进程的卡顿,编译的同时收集编译信息,虽然会进行动态优化(例如热点代码热点方法等),但是会占用更多的内存资源
2·第一次编译运行时候较慢

方法内联:

假设一个方法checkUser,每一个接口都需要调用,用于校验身份和权限,按照方法的入栈出栈,这个方法会被每一个工作线程不停压入自己的私有栈中,执行完该方法后,再跳转回上一个方法,这样性能不高,而JIT优化中的一点方法内联,则支持将该方法代码复制到调用方法中,从而避免发生真实的方法调用,也就是checkUser的代码过来就好,它自身不要压进来。而JIT要实现这一点优化,很明显要有个地方保存类似“方法编译记录”之类的缓存,而这也可以理解为什么JIT更加占用内存以及支持更高的吞吐量<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值