【发布时间】:2012-11-14 19:10:16
【问题描述】:
据我所知,JIT 将字节码编译成可以更快运行的本机机器码。所以根据我的信念,我的问题的答案应该是 1。翻译成机器码 2.解释字节码。解释代码意味着执行代码。但我找到了相反的答案!谁能解释一下...在此先感谢
【问题讨论】:
据我所知,JIT 将字节码编译成可以更快运行的本机机器码。所以根据我的信念,我的问题的答案应该是 1。翻译成机器码 2.解释字节码。解释代码意味着执行代码。但我找到了相反的答案!谁能解释一下...在此先感谢
【问题讨论】:
一旦您有了字节码序列的机器码(正如您所指出的,它应该比解释更快),继续解释该字节码序列 (*) 是没有意义的。在后台运行或尚未开始编译时进行解释更有用(无论出于何种原因 - 一个常见的情况是:代码执行的频率不够高,不值得编译)。
(*) 实际上,一些 JIT 编译器确实对机器代码进行了专门化,以至于它对某些代码路径或输入无效,并且在发生这些情况时不得不退回到解释/重新编译。甚至其他 JIT 编译器有时也会重新编译代码,这可能会也可能不会导致暂时返回解释。但总的来说,如果代码适用并且速度更快(应该总是如此),那么不使用它是没有意义的。
【讨论】: