【问题标题】:Does a JIT compiler compile code statement-by-statement or method-by-method or the whole program in one go?JIT 编译器是逐个语句或逐个方法编译代码还是一次性编译整个程序?
【发布时间】:2014-06-18 03:54:47
【问题描述】:

我已经阅读了一些关于 JIT 编译器功能的文章和帖子。有人说 JIT 编译器在运行之前编译整个程序,有人说 JIT 编译“片段”——没有定义“片段”是什么,有人说它逐个方法编译。有人说它在执行之前编译每个语句。但是在执行之前编译整个程序肯定与正常编译没有太大区别吗?

哪个版本是正确的?

【问题讨论】:

  • 那里的答案都没有解决这个问题。
  • 您指的是哪种 JIT 实现?
  • 有不同类型的 JIT 编译器。有的按方法编译,有的(跟踪)编译痕迹,可能是循环、方法等。
  • 在哪里可以找到不同 JIT 编译器的列表?当我搜索“jit 编译器的类型”时,我只得到 .NET 编译器。

标签: jit


【解决方案1】:

当您从 IDE 编译程序时,您会得到一个由中间语言 (IL) 代码构成的 EXE。特定于平台的 JITter 将这种可移植的 IL 转换为本地代码(本地机器语言)。

在 Java 中,JIT 编译器在方法入口处运行。资源: http://docs.oracle.com/cd/E15289_01/doc.40/e15058/underst_jit.htm

.NET 也是每个方法的 JIT。资源: http://msdn.microsoft.com/en-us/library/ht8ecch6(v=vs.71).aspx

【讨论】:

  • 是否有可能的编译器的详尽列表,例如方法和跟踪 JIT?
猜你喜欢
  • 1970-01-01
  • 2011-07-01
  • 2010-11-18
  • 2016-12-15
  • 2019-09-18
  • 2016-11-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多