浅谈 JIT-动态编译 与 AOT-静态编译

2023-05-09  本文已影响0人  a_pioneer

JIT

在运行时将源码/中间字节码编译成可执行的二进制码。即边编译边运行。

AOT

提前将代码编译成可执行的二进制码。即先编译后运行。

特性

动态性

平台无关

动态性 平台 内存 性能
JIT 能够自己生成新的源码,热重载替换原码。根据代码执行的热度优化生成更高效的二进制代码等,能够实现渐进升级 平台无关 开销多,编译带来额外花销 慢启动,随着优化性能不断提高。但这也导致了性能波动的不稳定性。
AOT 不具备动态性,app升级需重新编译 平台相关 开销少 启动快,性能稳定,但无法得到进一步优化

总结

两者的总体性能差别不大,甚至JIT有些时候能超过AOT。但是JIT的性能波动导致了有些应用不适合使用。两者都不能解决所有需求,有时候还需要作为互补。

上一篇 下一篇

猜你喜欢

热点阅读