PGO(Profile-guided Optimization)即反馈编译优化,是一种编译器优化技术。PGO是一个动态的优化过程,需要进行一次预测试,预测试是对程序进行采样,获取程序的热点函数、函数分布等特征,然后将采样得到的数据反馈给下一次编译,重新编译生成优化后的代码。
make CFLAGS="-fprofile-generate=/opt/gcc_profile" LDFLAGS="-fprofile-generate=/opt/gcc_profile" -j
redis-cli -h 192.168.222.124 -p 6379 shutdown
192.168.222.124和6379为Redis服务端的IP地址和端口号,请根据实际情况修改。
make distclean
在使用收集到的数据重新编译之前,清理之前的构建结果以避免干扰。
make CFLAGS="-fprofile-use=/opt/gcc_profile -fprofile-correction -Wno-error=coverage-mismatch" LDFLAGS="-fprofile-use=/opt/gcc_profile -fprofile-correction -Wno-error=coverage-mismatch" -j
“/opt/gcc_profile”为采样文件放置目录,可以自定义。如果需要再次执行GCC PGO优化,请先删除“/opt/gcc_profile”目录中的旧数据,以避免新旧数据混淆。