传统编译优化只能通过静态的程序分析及启发式算法预测程序的执行行为。PGO通过采集程序运行时信息,可以精准的判断代码的冷热、执行的概率,从而完成高效的冷热分区、分支预测、函数重排、寄存器分配、向量化、函数内联等优化,提升cache命中率、分支命中率和数据并行度,减少寄存器压力。
典型优化原理说明如下:
剥离冷分支,使热点代码聚合,提升cache命中率。
代码段函数重排,使热点函数聚合,降低iTLB 及icache miss。
调整分支顺序,降低branch miss率。
基于反馈的inline:全局分析,精准内联,优化调用栈,内存排布更优。
结构分支调整,减少跳转,降低branch miss率。