JIT和AOT
目前,程序主要有两种运行方式:静态编译与动态解释。
静态编译的程序在执行前全部被翻译为机器码,通常将这种类型称为AOT (Ahead of time)即 “提前编译”;
而解释执行的则是一句一句边翻译边运行,通常将这种类型称为JIT(Just-in-time)即“即时编译”。
AOT程序的典型代表是用C/C++开发的应用,它们必须在执行前编译成机器码,而JIT的代表则非常多,如JavaScript、python等。
事实上,所有脚本语言都支持JIT模式。但需要注意的是JIT和AOT指的是程序运行方式,和编程语言并非强关联的,有些语言既可以以JIT方式运行也可以以AOT方式运行,如Java、Python,它们可以在第一次执行时编译成中间字节码、然后在之后执行时可以直接执行字节码。
也许有人会说,中间字节码并非机器码,在程序执行时仍然需要动态将字节码转为机器码,是的,这没有错,不过通常我们区分是否为AOT的标准就是看代码在执行之前是否需要编译,只要需要编译,无论其编译产物是字节码还是机器码,都属于AOT。
在此,大家不必纠结于概念,概念就是为了传达精神而发明的,只要大家能够理解其原理即可,得其神忘其形。
原文链接:https://blog.csdn.net/qq_33314190/article/details/89953859
本文深入探讨了程序的两种主要运行方式:AOT(提前编译)与JIT(即时编译)。AOT代表如C/C++等语言在执行前完全编译为机器码,而JIT如JavaScript、Python等则是边翻译边运行。文章还讨论了某些语言如Java和Python如何在首次执行时编译为中间字节码,后续直接执行字节码。
924

被折叠的 条评论
为什么被折叠?



