知识卡片
选择性优化让运行时兼顾启动速度和峰值性能
内容
很多人以为运行时编译器必须一直简单,因为代码编译完要立刻投入使用。现代虚拟机的真实做法是选择性优化:方法首次调用先用简单编译器快速生成代码;随程序运行系统在线监控热点方法,只对它们用开销更大的优化编译器重新编译。这个分层策略让大多数代码快进快出、少数关键代码被反复打磨,两个目标同时达成而非二选一。
参考来源
- 位置:《架构之美》第10章《元循环虚拟机的力量:Jikes RVM》10.2.1节《因为运行时编译器必须快,所以它们必须简单》及10.5.1节《基础的执行模型》(源文件:程序之美系列套装(6册)团队之美、项目管理之美、架构之美、数据之美、测试之美、安全之美/_epub-src/OEBPS/Text/part0212.xhtml, part0223.xhtml)
- 结论依据:原文明确"大部分现代生产的虚拟机依赖选择性优化(selective optimization)的形式。在选择性优化中,在线剖析用于识别部分的执行方法来用一个激进优化的编译器进行优化;其他方法在执行之前立即由一个非常快速的非优化编译器进行解析或编译"。
- 原始内容:大部分现代生产的虚拟机依赖选择性优化(selective optimization)的形式。在选择性优化中,在线剖析用于识别部分的执行方法来用一个激进优化的编译器进行优化。