用 PGO 对C++程序执行性能进行优化

    xiaoxiao2026-08-28  13

    程序

    测试程序 test.cpp ( 仅仅是示例,本程序并不会有性能提升):

    #include <stdlib.h> int m = 50200000; char arr[4] = {'1', '2', '3', 0}; long test() { long sum = 0; int a = 0; for (a = 0; a < m; ++a) { sum += atoi(arr+(a%2)); } } int main(int argc, const char *argv[]) { test(); return 0; }

    编译:

    原始程序: g++ -O2 -o origin 生成trace的程序: g++ -O2 -o trace

    运行采样

    ./trace

    这时候会在当前目录生成 test.gcda

    针对采样重新编译:

    g++ -O2 -fprofile-use -o optimized

    最后,生成的 optimized 程序是优化后的二进制文件。

    性能对比

    用 time 命令查看优化前后的执行时间

    time ./origin time ./optimized

    参考文献

    https://dom.as/2009/07/27/profile-guided-optimization-with-gcc/http://cboard.cprogramming.com/tech-board/111902-pgo-amazing.htmlhttps://gcc.gnu.org/onlinedocs/gcc-4.7.2/gcc/Optimize-Options.html#Optimize-Options
    转载请注明原文地址: https://ju.6miu.com/read-1311654.html
    最新回复(0)