2025年程序性能分析工具—gprof

程序性能分析工具—gprof性能分析工具 gprof 一 概述 gprof 是 GNU 提供的程序时间监测工具 可以统计出各个函数的调用次数 时间 以及函数调用图 可以通过命令 man gprof 进来了解 二 原理 在编译和链接程序的时候 使用 pg 选项 这样 gcc g

大家好,我是讯享网,很高兴认识大家。

性能分析工具—gprof

一、概述

gprof 是 GNU 提供的程序时间监测工具,可以统计出各个函数的调用次数、时间、以及函数调用图。可以通过命令man gprof进来了解。

二、原理

在编译和链接程序的时候,使用-pg选项,这样gcc/g++就会在应用程序的每个函数中都加入一个名为mcount/_mcount/__mcount的函数,即用-pg编译的应用程序里的每个函数都会调用mcount函数,而mcount函数会在内存中保存一张函数调用图,并通过函数调用堆栈的形式查找子函数和父函数的地址,这张调用图也保存了所有与函数相关的调用时间、调用次数等所有信息。

三、实战操作

例子程序:下载bch.c

 vim bch.c gcc -pg -o bch bch.c ./bch gprof bch gprof bch gmon.out >report.txt 

讯享网

备注:运行bch程序正常退出,才能生成gmon.out文件

分析report.txt就可以获得程序的调用关系、函数执行时间等信息


讯享网

report.txt部分信息如下:

讯享网Flat profile: Each sample counts as 0.01 seconds. no time accumulated % cumulative self self total time seconds seconds calls Ts/call Ts/call name 0.00 0.00 0.00  0.00 0.00 mod_s 0.00 0.00 0.00  0.00 0.00 gf_mul 0.00 0.00 0.00 32287 0.00 0.00 a_log 0.00 0.00 0.00 16149 0.00 0.00 gf_sqr 0.00 0.00 0.00 10242 0.00 0.00 fls 0.00 0.00 0.00 10241 0.00 0.00 deg 0.00 0.00 0.00 558 0.00 0.00 ___arch__swab32 0.00 0.00 0.00 140 0.00 0.00 a_pow 0.00 0.00 0.00 140 0.00 0.00 modulo 0.00 0.00 0.00 16 0.00 0.00 bch_alloc 0.00 0.00 0.00 4 0.00 0.00 load_ecc8 0.00 0.00 0.00 2 0.00 0.00 display_info 0.00 0.00 0.00 2 0.00 0.00 encode_bch 0.00 0.00 0.00 2 0.00 0.00 encode_bch_unaligned 0.00 0.00 0.00 2 0.00 0.00 store_ecc8 0.00 0.00 0.00 1 0.00 0.00 build_deg2_base 0.00 0.00 0.00 1 0.00 0.00 build_gf_tables 0.00 0.00 0.00 1 0.00 0.00 build_mod8_tables 0.00 0.00 0.00 1 0.00 0.00 compute_generator_polynomial 0.00 0.00 0.00 1 0.00 0.00 decode_bch 0.00 0.00 0.00 1 0.00 0.00 init_bch % the percentage of the total running time of the time program used by this function. 

四、生成函数调用图

由于结果report.txt分析不太直观,可以借助gprof2dot.py与dot工具生成函数调用图

  1. dot使用依赖于graphviz
    apt-get install graphviz
  2. gprof2dot.py获取
    git clone https://github.com/jrfonseca/gprof2dot.git
  3. 生成调用函数图
    gprof bch gmon.out |./gprof2dot.py -n0 -e0 |dot -Tpng -o output.png

备注:gprof2dot.py是从获取gprof2dot目录拷贝出来的,修改gprof2dot.py执行权限chmod 777 gprof2dot.py

函数调用图如下:
函数调用图

五、gprof缺点

  1. 函数执行时间是估计值
  2. 不能处理内联函数
  3. 不适合存在大量递归调用的程序
小讯
上一篇 2025-03-13 15:37
下一篇 2025-02-25 09:29

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/73196.html