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

JIT

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

AOT

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

特性

动态性

  • JIT 能够自己生成新的源码,热重载替换原码。根据代码执行的热度优化生成更高效的二进制代码等。
  • AOT 无法做到

平台无关

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

总结

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

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容