动态编译(dynamic compilation),理学-计算机科学技术-计算机软件-系统软件-编译系统,一些程序设计语言采用的在运行时对程序进行编译以提高程序运行效率的方法。动态编译的重要任务是在程序运行时利用运行时信息对热点代码进行编译优化。类似词法分析、语法分析等工作被延迟到运行时执行的用处不大,只需要将编译中后端(部分优化和目标代码生成)延迟到运行时完成。因此,通常情况下,程序会先转换成一种中间表示,在程序执行过程中,通过一个运行时编译后端动态地优化中间表示,并翻译成机器码。在动态编译过程中需要收集和分运行时信息,因此引入额外的开销。为了提高动态编译的速度,动态编译一般不针对完整程序,而是通过采样或计数等方法确定程序的“热点”代码,动态重编译“热点”代码。和静态编译相比,动态编译利用运行时信息,能够更精确地获取诸如分支转移、别名、数据依赖等信息,进行更激进的优化。动态编译通常包含两个重要组件:动态编译引擎(dynamic compilation engine)和代码缓存(compiled code cache)。代码缓存中存放经过动态编译优化的热点代码段。