首页
登录 | 注册

gprof介绍


gprof是GNU profiler工具。可以显示程序运行的“flat profile”,包括每个函数的调用次数,每个函数消耗的处理器时间。也可以显示“调用图”,包括函数的调用关系,每个函数调用花费了多少时间。还可以显示“注释的源代码”,是程序源代码的一个复本,标记有程序中每行代码的执行次数。

为gprof编译程序
在编译或链接源程序的时候在编译器的命令行参数中加入“-pg”选项,编译时编译器会自动在目标代码中插入用于性能测试的代码片断,这些代码在程序在运行时采集并记录函数的调用关系和调用次数,以及采集并记录函数自身执行时间和子函数的调用时间,程序运行结束后,会在程序退出的路径下生成一个 gmon.out文件。这个文件就是记录并保存下来的监控数据。可以通过命令行方式的gprof或图形化的Kprof来解读这些数据并对程序的性能进行分析。另外,如果想查看库函数的profiling,需要在编译是再加入“-lc_p”编译参数代替“-lc”编译参数,这样程序会链接libc_p.a 库,才可以产生库函数的profiling信息。如果想执行一行一行的profiling,还需要加入“-g”编译参数。
例如如下命令行:
gcc -Wall -g -pg -lc_p example.c -o example

执行gprof
执行如下命令行,即可执行gprof:
gprof OPTIONS EXECUTABLE-FILE gmon.out BB-DATA [YET-MORE-PROFILE-DATA-FILES...] [> OUTFILE]

gprof产生的信息
                        the percentage of the total running time of the
time                      program used by this function.
                            函数使用时间占所有时间的百分比。
cumulative           a running sum of the number of seconds accounted
seconds              for by this function and those listed above it.
                            函数和上列函数累计执行的时间。
self                     the number of seconds accounted for by this
seconds              function alone.   This is the major sort for this
                           listing.
                           函数本身所执行的时间。
calls                    the number of times this function was invoked, if
                           this function is profiled, else blank.
                           函数被调用的次数
self                    the average number of milliseconds spent in this
ms/call                function per call, if this function is profiled,
                          else blank.
                           每一次调用花费在函数的时间microseconds。
total                   the average number of milliseconds spent in this
ms/call                function and its descendents per call, if this
                           function is profiled, else blank.
                           每一次调用,花费在函数及其衍生函数的平均时间microseconds。
name                  the name of the function.   This is the minor sort
                           for this listing. The index shows the location of
                           the function in the gprof listing. If the index is
                           in parenthesis it shows where it would appear in
                           the gprof listing if it were to be printed.
                           函数名


相关文章

  • LeaRun.Framework━ .NET快速开发框架 ━ 工作流程组件介绍
    LeaRun.Framework.NET,基于.NET的快速开发框架.整合框架,为企业或个人在.NET环境下快速开发系统提供了强大的支持,开发人员不需要开发系统的基础功能和公共模块,框架自身提供了强大的函数库和开发包,开发人员只须集中精力专 ...
  • 介绍Kubernetes监控Heapster
    Heapster是容器集群监控和性能分析工具,天然的支持Kubernetes和CoreOS,Kubernetes有个出名的监控agent-cAdvisor.在每个kubernetes Node上都会运行cAdvisor,它会收集本机以及容器 ...
  • IQ 性能诊断工具介绍(4)_全文完
    5. 获得IQ SQL语句执行计划   "查询计划"描述了有关一个查询已经怎样被执行或将要怎样被执行的重要细节.当你遇到如下情况时需要获得执行计划:     * 你怀疑(或已经知道)一个查询运行的很差       查询计 ...
  • SIMATIC  Net介绍: SIMATIC  Net软件是用于西门子工业网络通讯的软件.  主要用于和其他厂家的监控软件通讯,比如说iFIX,不过需要SI7作为驱动,走OPC,SI7与OPC交换数据;如果用S7A做驱动的话,可以不用SI ...
  • 1]开篇介绍 最近这几天在捣鼓并行计算,发现还是有很多值得分享的意义,因为我们现在很多人对它的理解还是有点不准确,包括我自己也是这么觉得,所以整理一些文章分享给在使用.NET并行计算的朋友和将要使用.NET并行计算的朋友:     NET并 ...
  • Java 内存模型 - jsr133 规范介绍
    最近在看<深入理解Java虚拟机:JVM高级特性与最佳实践>讲到了线程相关的细节知识,里面讲述了关于java内存模型,也就是jsr 133定义的规范. 系统的看了jsr 133规范的前面几个章节的内容,觉得受益匪浅.废话不说,简 ...

2020 unjeep.com webmaster#unjeep.com
12 q. 0.011 s.
京ICP备10005923号