即时编译器优化技术一览
1.编译器策略(compiler tactics) 延迟编译(delayed compilation) 分层编译(tiered compilation) 栈上替换(on-stack replacement) 延迟优化(delayed reoptimization) 静态单赋值表示(static single assignment representation) 2.基于性能监控的优化技术(profile-based techniques) 乐观空值断言(optimistic nullnuess assertions) 乐观类型断言(optimistic type assertions) 乐观类型增强(optimistic type strengthening) 乐观数组长度增强(optimistic array length strengthening) 裁剪未被选择的分支(untaken branch pruning) 乐观的多态内联(optimistic N-morphic inlining) 分支频率预测(branch frequency prediction) 调用频率预测(call frequency prediction) 3.基于证据的优化技术(proof-based techniques) 精确类型推断(exact type inference) 内存值推断(memory value inference) 内存值跟踪(memory value tracking) 常量折叠(constant folding) 重组(reassociation) 操作符退化(operator strength reduction) 空值检查消除(null check elimination) 类型检测退化(type test strength reduction) 类型检测消除(type test climination) 代数简化(algebraic simplification) 公共子表达式消除(common subexpression elimination) 4.数据流敏感重写(flow-sensitive rewrites) 条件常量传播(conditional constant propagation) 基于流承载的类型缩减转换(flow-carried type narrowing) 无用代码消除(dead code elimination) 5.语言相关的优化技术(language-specific techniques) 类型继承关系分析(class hicrarchy analysis) 去虚拟化(devirtualization) 符号常量传播(symbolic constant propagation) 自动装箱消除(autobox elimination) 逃逸分析(escape analysis) 锁消除(lock elision) 锁膨胀(lock coarsening) 消除反射(de-reflection) 6.内存及代码位置变换(memory and placement transformation) 表达式提升(expression hoisting) 表达式下沉(expression sinking) 冗余存储消除(redundant store elimination) 相邻存储合并(adjacent store fusion) 交汇点分离(merge-point splitting) 7.循环变换(loop transformations) 循环展开(loop unrolling) 循环剥离(loop peeling) 安全点消除(safepoint elimination) 迭代范围分离(iteration range splitting) 范围检查消除(range check elimination) 循环向量化(loop vectorization) 8.全局代码调整(global code shaping) 内联(inlining) 全局代码外提(global code motion) 基于热度的代码布局(heat-based code layout) Switch调整(switch balancing) 9.控制流图变换(control flow graph transformation) 本地代码编排(local code scheduling) 本地代码封包(local code bundling) 延迟槽填充(delay slot filling) 着色图寄存器分配(graph-coloring register allocation) 线性扫描寄存器分配(linear scan register allocation) 复写聚合(copy coalescing) 常量分裂(constant splitting) 复写移除(copy removal) 地址模式匹配(address mode matching) 指令窥空优化(instruction peepholing) 基于确定有限状态机的代码生成(DFA-based code generator)