本页使用了标题或全文手工转换

即時編譯

维基百科,自由的百科全书
跳到导航 跳到搜索

即时编译英语:Just-in-time compilation,缩写:JIT[1][2],又译及时编译[3]实时编译[4]动态编译的一种形式,是一种提高程序运行效率的方法。通常,程序有两种运行方式:静态编译与動態直譯。静态编译的程序在执行前全部被翻译为机器码,而直譯执行的则是一句一句边运行边翻译。

即时编译器则混合了这二者,一句一句编译源代码,但是会将翻译过的代码缓存起来以降低性能损耗。相对于静态编译代码,即时编译的代码可以处理延迟绑定并增强安全性。

即时编译器有两种类型,一是字节码翻译,二是动态编译翻译。

微软的.NET Framework[5][6],还有绝大多数的Java实现[7],都依赖即时编译以提供高速的代码执行。Mozilla Firefox使用的JavaScript引擎SpiderMonkey也用到了JIT的技術。Ruby的第三方实现RubiniusPython的第三方实现PyPy也都通过JIT来明显改善了解释器的性能。

参考文献[编辑]

  1. ^ 吴廷鹏, 张昱, & 刘玉宇. (2009). 基于即时编译器辅助的并行垃圾收集器. Computer Engineering, 35(10). http://staff2.ustc.edu.cn/~yuzhang/papers/ce0910.pdf
  2. ^ 张昱, & 袁丽娜. 即时编译器辅助的垃圾收集中的插桩算法研究. Journal of Chinese Computer Systems, 28(2008). http://staff2.ustc.edu.cn/~yuzhang/papers/0801187_081213.pdf
  3. ^ 丁宇新, 梅嘉, & 程虎. (1999). 国产开放系统平台 Java 及时编译器的设计与实现 (Doctoral dissertation). http://www.cnki.com.cn/Article/CJFDTotal-JSJX199912010.htm
  4. ^ 微软语言门户术语搜索中英语Just-in-time compilation到简体中文
  5. ^ Meijer, E., & Gough, J. (2001). Technical overview of the common language runtime. language, 29, 7. http://www.math.uaa.alaska.edu/~afkjm/csce331/handouts/clr.pdf
  6. ^ Fay, D. (2003, April). An architecture for distributed applications on the Internet: overview of Microsoft's. NET platform. In Proceedings of the 17th International Symposium on Parallel and Distributed Processing (pp. 90-1). IEEE Computer Society. https://dl.acm.org/citation.cfm?id=838554
  7. ^ Kogent Solution Inc. Java 6 Programming Black Book, New Ed. Dreamtech Press. 2007: 5. ISBN 9788177227369.