性能分析工具gprof -linux

(转)性能分析工具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能够显示程序执行时用到的系统调用,具体请参阅相关手册。

你可能感兴趣的:(博客)