JIT

维基百科,自由的百科全书

跳转到: 导航, 搜索

JITjust-in-time compilation即时编译)指计算机领域裡,即时编译也被称为动态翻译dynamic translation),是一种通过在运行时将字节码翻译为机器码,从而改善字节码编译语言性能的技术。即时编译前期的两个运行时理论是字节码编译和动态编译

在编译为字节码的系统如 Limb 编程语言,Smalltalk,UCSD P-System, PerlGNU CLISP,和 Java 的早期版本中, 源代码被翻译为一种中间表示即字节码。 字节码不是任何特定计算机的机器码, 它可以在多种计算机体系中移植。 字节码被解释着运行在虚拟机里。

动态编译环境是一种在执行时使用编译器的编译环境。 例如, 多数 Common Lisp 系统有一个编译函数,他可以编译在运行时创建的函数。

在即时编译环境下, 字节码的编译是第一步, 它将源代码递归到可移植和可优化的中间表示。字节码被部署到目标系统。 当执行代码时,运行时环境的编译器将字节码翻译为本地机器码。 基于每个文件或每个函数:函数仅仅在他们要被执行时才会被编译。

目标是要组合利用本地和字节码编译的多种优势:多数重量级的任务如源代码解析和基本性能的优化在编译时处理,将字节码编译为机器码比起从源代码编译为机器码要快得多。部署字节码是可移植的,而机器码只限于特定的系统结构。 从字节码到机器码编译器的实现更容易,因为大部分工作已经在实现字节码编译器时完成。

[编辑] 历史

在1980年代早期,商业 Smalltalk 的实现即今天的 VisualWorks 开创了动态编译的先河。 目前在多数 Java 虚拟机的实现中使用了这一技术。

个人工具