第一句子网 - 唯美句子、句子迷、好句子大全
第一句子网 > 程序性能分析工具—gprof

程序性能分析工具—gprof

时间:2019-08-19 01:40:38

相关推荐

程序性能分析工具—gprof

性能分析工具—gprof

一、概述

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

二、原理

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

三、实战操作

例子程序:下载bch.c

vim bch.cgcc -pg -o bch bch.c./bchgprof bchgprof 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 selftotal time seconds seconds calls Ts/call Ts/call name 0.000.000.00 1737770.000.00 mod_s0.000.000.00 1570800.000.00 gf_mul0.000.000.00 322870.000.00 a_log0.000.000.00 161490.000.00 gf_sqr0.000.000.00 102420.000.00 fls0.000.000.00 102410.000.00 deg0.000.000.005580.000.00 ___arch__swab320.000.000.001400.000.00 a_pow0.000.000.001400.000.00 modulo0.000.000.00 160.000.00 bch_alloc0.000.000.00 40.000.00 load_ecc80.000.000.00 20.000.00 display_info0.000.000.00 20.000.00 encode_bch0.000.000.00 20.000.00 encode_bch_unaligned0.000.000.00 20.000.00 store_ecc80.000.000.00 10.000.00 build_deg2_base0.000.000.00 10.000.00 build_gf_tables0.000.000.00 10.000.00 build_mod8_tables0.000.000.00 10.000.00 compute_generator_polynomial0.000.000.00 10.000.00 decode_bch0.000.000.00 10.000.00 init_bch% the percentage of the total running time of thetime program used by this function.

四、生成函数调用图

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

dot使用依赖于graphviz

apt-get install graphvizgprof2dot.py获取

git clone /jrfonseca/gprof2dot.git生成调用函数图

gprof bch gmon.out |./gprof2dot.py -n0 -e0 |dot -Tpng -o output.png

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

函数调用图如下:

五、gprof缺点

函数执行时间是估计值不能处理内联函数不适合存在大量递归调用的程序

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。