即时编译(也称为动态翻译或JIT)是一种用于计算的技术,可以提高计算机程序的运行时性能的质量。它是在运行时环境中发现的两种思想的结合:字节码编译和动态编译(这是某些编程语言实现为了在系统执行动作时获得性能而使用的过程)。
解释器最准确地描述了通过计算机程序执行动作的过程。解释器实际执行的操作类型有一些变体:它直接执行程序的源代码;它将源代码转换成表示形式,该表示形式是有效的中间表示形式,然后执行所述代码;它执行由编译器存储和创建的预编译代码,该编译器是解释器系统的一部分。
JIT有能力组合在解释和静态(也就是说,提前)编译中发现的优点。作为解释器,JIT可以通过缓存已翻译的代码块的结果来提高性能–与每次在代码中每次出现的每一行或每个操作数(如解释语言)简单地重新求值相比。就像开发时的静态编译代码一样,如果发现JIT是最有利的行动计划,则JIT能够对其进行重新编译。同样,与静态编译一样,JIT能够强制执行安全保证。
就像编译器一样,解释器也具有翻译代码的能力。两者都是实现编程语言的主要方法。但是,“编译器”或“解释器”的类别并没有区别(因为它们具有代码翻译的双重作用)。使用解释器的最明显的缺点是,一旦解释了代码,程序运行将不可避免地比仅编译代码时要慢。但是,解释代码所花的时间比编译和运行它所花的时间少得多(尤其是在进行原型设计和测试代码时,这是相关的)。
一般而言,JIT提供了比解释器更好的性能,并且在许多情况下,提供了比静态编译器更好的性能。但是,它比JIT的优势并不妨碍它具有一些主要缺点:最初执行应用程序时会稍有延迟(花时间加载和编译字节码的副作用)。最终将产生更好的编码;然而,这样做固有的初始延迟将随着编码质量而增加。
总结
- JIT是一种用于提高运行时环境中的运行时性能的技术;解释器通过计算机程序定义动作的执行。
- JIT结合了解释和静态编译的优点;解释器可以像编译器一样解析翻译代码,但是会损害程序的速度。
欢迎任何形式的转载,但请务必注明出处,尊重他人劳动成果。
转载请注明:文章转载自 有区别网 [http://www.vsdiffer.com]
本文标题:JIT和解释器
本文链接:https://www.vsdiffer.com/vs/jit-vs-interpreter.html
免责声明:以上内容仅是站长个人看法、理解、学习笔记、总结和研究收藏。不保证其正确性,因使用而带来的风险与本站无关!如本网站内容冒犯了您的权益,请联系站长,邮箱: ,我们核实并会尽快处理。