特性说明
该优化通过插桩方式收集程序运行时信息(profile)以支持优化决策,编译器利用这些运行时信息指导各类编译优化,从而生成更高效的目标程序。
该优化主要包括两种优化方式:
- Edge Profile:在函数CFG(Control Flow Graph)的边上插入计数器,获取程序的运行计数信息。
- Value Profile:由于编译器的优化需要了解某些表达式或变量的取值情况,该优化在插桩过程中插入代码,用于统计这些表达式或变量在运行时的常见取值。程序运行后,生成的 profile文件会被读回编译器,以指导其做出更优的优化决策。目前,GCC支持多种value profile计数功能,包括变量常用取值、数值是否为 2 的幂次、高频间接调用地址、函数首次运行编号等。
父主题: PGO