您的位置:首页 > 运维架构 > Linux

性能分析工具gprof -linux

2014-06-18 16:02 351 查看

(转)性能分析工具gprof:

有一些程序设计工具,它可以告诉你程序执行的效率,整个程序的调用结构,函数调用关系等。这样的工具真的很有用。gprof就是这样的一个效率分 析工具,它能产生一份详细的列表,列出程序执行的一些统计值,其中包括每个函数被调用的频率,被谁调用,所花费时间等。要使用gprof,在用gcc编译 时要加上-pg参数。这个参数会在目的文件中加上gprof所需的信息,也会将执行文件连接上支持性能分析的函数库。

你只要直接执行编译时加过-pg的程序即可,执行完毕后会在当前工作目录下产生一个gmon.out的文件,它记录了gprof所需的信息,我们可以用gprof来读取它。

$ gcc bintree.c -o bintree -pg

$ ./bintree

...

$ gprof bintree gmon.out

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       28     0.00     0.00  print
0.00      0.00     0.00        7     0.00     0.00  btree_insert
...


gprof的输出信息相当冗长,上面省略了很多。由于上面的函数执行太快,而gprof的计时单位相当粗略,所以那些函数的执行时间都显示0.00秒。gprof能为我们提供不少有用的信息。

另一个常用的计时工具是time命令,它可以精确地测量程序运行时间。使用它只需在其后面 加上要测量的命令即可。比如:

$time ./test>/dev/null
显示如下,分别是实际耗时,用户级别耗时和系统级别耗时:

real    0m0.056s
user    0m0.014s
sys     0m0.006s


它还能格式化输出,还能测量输入/输出,消息数目,非常方便。还有一个更简单的calls程序,它只显示源代码中函数调用的树状结构。而strace能够显示程序执行时用到的系统调用,具体请参阅相关手册。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: