及时编译像Memoization?

时间:2011-06-11 06:05:38

标签: compiler-construction jit memoization

我试图理解及时编译/解释,以及时间编制的负责人?我是否正确地说,及时有点像记忆?因为它重用了“解决方案”,即机器或字节代码,它识别为重复的部分?

1 个答案:

答案 0 :(得分:0)

不,这不正确。

让我们看一下当你在它们上面输入一些字节码时这些工具的作用。 (用非常简单的术语)

解释

解释器查找字节码,找出他必须做什么,做到了,然后转到下一个字节码。这很简单,并且在运行时都会发生。

AOT编译器

AOT编译器是人们谈论编译器时最常提到的。当你编译时,他会查看你给他的字节码,并找出他必须生成的nativ代码(汇编程序)。所以,当你运行这个本土代码时,你不必知道用解释器做什么,这就是为什么它更快。

JIT编译器:

JIT的想法是程序中的大部分时间都花在循环中。所以当你有一个循环有100次迭代时,你会在每次迭代中添加一些东西,解释器必须每次都看看你想要做什么并做到这一点。 JIT查看循环和sais“我没有必要找出在agian上做100次的事情。我只是要编译这段代码。然后他执行普通编译器的工作并生成一些nativ代码和跑那个。

JIT经常与翻译一起工作。解释器发现某个东西是一个循环然后将它传递给JIT,在循环之后它继续解释。

Java和.NET的实现不使用解释器,这也是可能的。 luajit,pypy和firefox中的JS实现都有一个解释器。

(如果你应该有口译员,可以辩论)

希望有所帮助。