崇义做网站,如何设计网页页面,百度刷自己网站的关键词,青海网站建设设计一、 反馈式编译
简介
PGO#xff0c;即Profile-Guided Optimizations#xff0c;反馈式优化。PGO是编译器的又一优化技术#xff0c;PGO与其它的一些优化技术/选项有一个明显的区别是#xff1a;PGO优化是分三步完成的#xff0c;是一个动态的优化过程。
反馈优化过…一、 反馈式编译
简介
PGO即Profile-Guided Optimizations反馈式优化。PGO是编译器的又一优化技术PGO与其它的一些优化技术/选项有一个明显的区别是PGO优化是分三步完成的是一个动态的优化过程。
反馈优化过程
步骤 1 编译器插桩编译编译生成插桩的可执行文件。步骤 2 运行插桩的可执行文件生成反馈数据文件gcda这些文件记录了程序中控制流图上边的执行次数。步骤 3 编译器读取反馈数据文件利用反馈优化生成高性能的可执行文件。
以下优化受益于反馈数据
寄存器分配基本块重排内联循环展开指令调度冗余指令删除等。
说明代码变更时反馈数据需要重新生成。
基础选项
编译获得插桩版本二进制或者so gcc main.c –fprofile-generate –o instrument.out 复制代码
上板运行获取gcda反馈式编译数据 ./instrument.out 复制代码
根据反馈式数据重新编译 gcc main.c –fprofile-use –o new.out 复制代码
二、 FGO
PGO是gcc原生的反馈编译优化方案 通过插桩运行采样得到的gcda文件来指导第二次编译优化而FGO针对gcda文件二进制属性解决业务侧源码交付的痛点profile文件使用文本的形式导入。两者的区别是FGO的profile文件可以通过适当的手动修改适配但当前FGO未完全支持C模块优化。
三、 softFDO
softFDO是通过原生插桩运行得到的采样数据转换成google开源gcov数据格式通过auto-profile Pass遍将数据导入进行优化。两者的区别是PGO支持value profile softFDO不支持softFDO使用的auto-profile Pass边在优化时调用了early-inline操作