动态编译
动态编译
动态编译是一种在程序执行期间提高性能的技术,常见于Java等编程语言
技术原理
动态编译技术起源于self语言,但在Java中得到了广泛应用。该技术允许在执行过程中进行优化,使得程序在初始阶段虽然执行速度较慢,但随着编译和重编译的完成,其执行速度将显著提升。由于启动时的性能滞后,动态编译并不适合所有场景。在许多实现中,一些本应在编译时进行的优化被推迟到了执行期,可能会导致不必要的性能损失。即时编译是动态编译的一种形式。
相关技术
类似的技术包括增量编译,它在POP-2、POP-11、某些LISP版本(如Maclisp)以及至少一种ML语言(PoplogML)中得到应用。增量编译器作为执行环境的一部分,可以从终端、文件或正在执行的程序构建的数据结构中读取源代码,并将其转化为机器码块或函数,这些新产生的代码可以直接被程序调用。由于实时交互开发和测试的需求,增量编译后的机器码可能没有经过充分的优化,但通常情况下,它们的执行速度仍然优于同一程序的解释版本。因此,增量编译结合了编译语言和解释语言的优点。为了增强可移植性,增量编译通常分为两个步骤:首先编译至中间层、与平台无关的语言,然后再编译至机器码。在这种情况下,移植只需要修改后端编译器即可。与动态编译不同的是,增量编译在程序执行后不会进行额外的优化。
自我(Self)语言
自我(Self)语言是由施乐帕洛阿尔托研究中心的David Ungar和Randy Smith于1986年提出的,这是一种基于原型的面向对象编程语言self语言强调概念上的简洁性,取消了类的概念,仅保留对象的概念,并将消息视为最基本的运算单位。Self语言取消了变量和赋值操作,而是通过消息传递的方式来访问和修改对象的属性。Self语言的发展受到了smalltalk的影响,它不仅是一个编程语言,还是一个集成了集成开发环境和运行环境的系统。Self语言具有一个名为Morphic的图形用户界面,其编程环境也是基于Morphic实现的。在Self语言中,许多功能,如可见性、模块管理和代码管理都交由环境处理,而反射机制则与环境紧密相关。在self语言的研究和发展过程中,研究人员提出了一些新的概念和技术,如traits和动态继承,这些创新有助于提高Self系统的性能。
参考资料
动态重编译.新浪爱问知识人.2024-10-24
Java.CSDN博客.2024-10-24
Morphic.CSDN博客.2024-10-24
目录
概述
技术原理
相关技术
自我(Self)语言
参考资料