我试图理解及时编译/解释,以及时间编制的负责人?我是否正确地说,及时有点像记忆?因为它重用了“解决方案”,即机器或字节代码,它识别为重复的部分?
答案 0 :(得分:0)
不,这不正确。
让我们看一下当你在它们上面输入一些字节码时这些工具的作用。 (用非常简单的术语)
解释器查找字节码,找出他必须做什么,做到了,然后转到下一个字节码。这很简单,并且在运行时都会发生。
AOT编译器是人们谈论编译器时最常提到的。当你编译时,他会查看你给他的字节码,并找出他必须生成的nativ代码(汇编程序)。所以,当你运行这个本土代码时,你不必知道用解释器做什么,这就是为什么它更快。
JIT的想法是程序中的大部分时间都花在循环中。所以当你有一个循环有100次迭代时,你会在每次迭代中添加一些东西,解释器必须每次都看看你想要做什么并做到这一点。 JIT查看循环和sais“我没有必要找出在agian上做100次的事情。我只是要编译这段代码。然后他执行普通编译器的工作并生成一些nativ代码和跑那个。
JIT经常与翻译一起工作。解释器发现某个东西是一个循环然后将它传递给JIT,在循环之后它继续解释。
Java和.NET的实现不使用解释器,这也是可能的。 luajit,pypy和firefox中的JS实现都有一个解释器。
(如果你应该有口译员,可以辩论)
希望有所帮助。