Answers:
JIT(即时)编译器在运行时即程序运行时编译代码。因此,编译成本是程序执行时间的一部分,因此应将其最小化。
与之相反的是提前(AOT)编译器,它基本上与“批处理编译器”同义。这会将源代码转换为机器代码,然后仅分发机器代码。因此,编译器可能非常慢,因为它不会影响生成程序的执行时间。
如今,当人们说“编译器”时,它们通常是指AOT编译器。确实,术语“ AOT编译器”直到最近才真正开始流行起来,因为人们开始为JIT编译语言(尤其是JavaScript)制作AOT编译器。这些语言中的许多语言(例如C#)会编译为VM的中间语言,然后在运行时将JIT编译为机器代码。术语“ AOT编译器”的含义是将源代码直接编译为机器代码,因此在运行时不需要任何形式的JIT编译。
在这一点上,“批处理编译器”有点陈旧。与流行的批处理编译器的真正对比是增量编译器。增量编译通常与您拥有REPL的语言(例如Lisp)相关联,您可以交互地请求语言实现来编译特定功能。如果执行了之前未请求编译的函数,则通常会对其进行解释。相比之下,批处理编译器可以一次(即成批)编译所有函数。
您提供的报价中暗含了含义!它源于不实时执行任务时使用的计算术语“ 批处理”,但是当负载(通常用于实时活动)较少时,它计划由操作系统稍后执行。
批处理编译器是一种在用户不等待编译结果时进行编译的编译器。我们可以说,这是使用更现代的术语在后台完成的。
这是JIT(即时)的反面,它在需要的确切时间“实时”完成,而无需花费额外的时间来更彻底地进行处理。
批处理编译速度较慢的示例如下:
资料来源:https : //xkcd.com/303/
甚至这个: