什么是公正的

与非JIT编译器相比,JIT编译器具体做什么? 有人能给出一个简洁而易于理解的描述吗?


JIT编译器程序启动运行并将代码(通常是字节码或某种虚拟机指令)即时(或称为即时)编译成通常更快的形式,通常是主机CPU的本机指令系统。 JIT可以访问动态运行时信息,而标准编译器不会并可以进行更好的优化,如内联经常使用的函数。

这与在程序首次运行之前所有代码编译为机器语言的传统编译器形成对比。

换句话说,传统编译器在第一次运行它之前将整个程序构建为EXE文件。 对于较新的样式程序,程序集由伪代码(p代码)生成。 只有在您在操作系统上执行该程序后(例如,通过双击其图标),(JIT)编译器才会启动并生成基于Intel处理器或其他任何可理解的机器代码(m代码)。


开始时,编译器负责将高级语言(定义为比汇编程序更高的级别)转换为目标代码(机器指令),然后将其链接(通过链接器)为可执行文件。

在语言发展的一个阶段,编译器会将高级语言编译为伪代码,然后解释器(解释器)将其解释为运行程序。 这消除了目标代码和可执行文件,并允许这些语言可移植到多个操作系统和硬件平台。 Pascal(编译成P-Code)是第一个; Java和C#是最近的例子。 最终术语P-Code被替换为字节码,因为大多数伪操作都是一个字节长。

准时制(JIT)编译器是运行时解释程序的一项功能,它不是每次调用某个方法时都解释字节码,而是将字节码编译为正在运行的机器的机器代码指令,然后调用此目标代码。 理想情况下,运行目标代码的效率将克服每次运行时重新编译程序的低效率。


JIT-就在这个词本身就说明什么时候需要(按需)

典型场景:

源代码完全转换为机器码

JIT场景:

源代码将被转换为汇编语言,如结构[用于C#的ex IL(中间语言),用于java的ByteCode]。

只有当应用程序需要时,中间代码才被转换为机器语言,所需的代码仅被转换为机器代码。

JIT与非JIT比较:

  • 在JIT中,并不是所有的代码都先转换成机器代码,然后将必要的代码的一部分转换成机器代码,然后如果调用的方法或功能不在机器中,那么它将变成机器代码......它减少CPU的负担。

  • 由于机器码将在运行时生成.... JIT编译器将生成针对运行机器CPU架构而优化的机器码。

  • JIT示例:

  • 在Java中JIT在JVM(Java虚拟机)
  • 在C#中它是在CLR(公共语言运行时)
  • 在Android中,它在DVM(Dalvik虚拟机)中,或ART(Android RunTime)中的更新版本中。
  • 链接地址: http://www.djcxy.com/p/52549.html

    上一篇: What does a just

    下一篇: set nginx as proxy for both apache and gunicorn at the same time