34 | 运行时优化:即时编译的原理和作用
宫文学
该思维导图由 AI 生成,仅供参考
前面所讲的编译过程,都存在一个明确的编译期,编译成可执行文件后,再执行,这种编译方式叫做提前编译(AOT)。 与之对应的,另一个编译方式是即时编译(JIT),也就是,在需要运行某段代码的时候,再去编译。其实,Java、JavaScript 等语言,都是通过即时编译来提高性能的。
那么问题来了:
什么时候用 AOT,什么时候用 JIT 呢?
在讲运行期原理时,我提到程序编译后,会生成二进制的可执行文件,加载到内存以后,目标代码会放到代码区,然后开始执行。那么即时编译时,对应的过程是什么?目标代码会存放到哪里呢?
在什么情况下,我们可以利用即时编译技术,获得运行时的优化效果,又该如何实现呢?
本节课,我会带你掌握,即时编译技术的特点,和它的实现机理,并通过一个实际的案例,探讨如何充分利用即时编译技术,让系统获得更好的优化。这样一来,你对即时编译技术的理解会更透彻,也会更清楚怎样利用即时编译技术,来优化自己的软件。
首先,来了解一下,即时编译的特点和原理。
了解即时编译的特点及原理
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
JIT技术是一种在程序运行时将代码编译成目标代码的方式,通过动态加载和执行代码,JIT能够提供即时运行、可移植性和性能优势。文章介绍了JIT的特点、原理和实现机理,以及其在提升软件性能方面的应用。以PostgreSQL为例,通过基于LLVM的JIT功能,性能得到显著提升。此外,JIT技术还可以用于提高数据库等基础软件的性能,对于参与研发此类软件的人来说,掌握JIT技术将会有很大的加分。总的来说,JIT技术在现代编程语言中具有重要意义,可以帮助软件获得性能上的提升。文章还提出了一些思考问题,如是否可以利用JIT技术提升支持DSL的软件性能,为读者提供了进一步思考和探索的空间。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《编译原理之美》,新⼈⾸单¥59
《编译原理之美》,新⼈⾸单¥59
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(3)
- 最新
- 精选
- 刘強感觉越来越像lisp的“代码即数据”了。在内存中运行时编译(生成)代码(数据),然后执行。编译期和解释期界限越来越模糊,怪不得有人说所有的编程语言都在向lisp进化。
作者回复: 看得出你是Lisp粉。 我曾经相当迷恋Lisp。用过一段时间的Common Lisp,甚至试图向同事推广。可是后来发现还是有点小众,解决一些技术问题资料也太少,后来就搁下了。但在设计我手头的语言的时候,还是经常会想想Lisp的特性。 我在后面关于元编程的一讲,会探讨一下Lisp。
2019-11-119 - Cryhard看来postgresql 11的生产级别试用可以提上日程了。似乎需要使用llvm编译一下?
作者回复: 官方应该有预编译好的版本吧?
2019-12-311 - 无名氏老师,请教下,应用进程的静态编译能使用的共享库吗,如果能使用那也要编译进符号表?动态编译使用共享库,共享库已什么形式存在,在一个独立的内存中,别的程序进行引用?2022-04-161
收起评论