如何使用gprof对软件做profiling

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用gprof对软件做profiling相关的知识,希望对你有一定的参考价值。

参考技术A 有些时候,我们特别关注程序的性能,特别是底层软件,比如驱动程序,OS等。为了更好的优化程序性能,我们必须找到性能瓶颈点,好钢用在刀刃上才能取得好的效果,否则可能白做工作。为了找到关键路径,我们可以使用profilng技术,在linux平台上,我们可以使用gprof和oprofile工具。 gprof是GNU工具之一,它在编译的时候在每个函数的出入口加入了profiling的代码,运行时统计程序在用户态的执行信息,可以得到每个函数的调用次数,执行时间,调用关系等信息,简单易懂。适合于查找用户级程序的性能瓶颈,对于很多时间都在内核态执行的程序,gprof不适合。 oprofile也是一个开源的profiling工具,它使用硬件调试寄存器来统计信息,进行profiling的开销比较小,而且可以对内核进行profiling。它统计的信息非常的多,可以得到cache的缺失率,memory的访存信息,分支预测错误率等等,这些信息gprof是得不到的,但是对于函数调用次数,它是不能够得到的。。 简单来说,gprof简单,适合于查找用户级程序的瓶颈,而oprofile稍显复杂,但是得到的信息更多,更适合调试系统软件。 我们以编译运行hello/doc/opreport/doc/opannotate/doc/opgprof/binutils/docs-2/ 使用 GNU profiler 来提高代码运行速度www-128/developerworks/cn/linux/l-gnuprof/developerworks/cn/linux/l-pow-oprofile/ 摘自:txgc1009的专栏 参考技术B 可以做

使用gprof对应用程序做性能评测

1,包含头文件gperftools/profiler.h

2,代码结构如下:

int main()
{
    // codes
    ProfilerStart("./profile");
    // working...
    ProfilerStop();
}

3,程序运行完之后,会在本地生成一个名为profile的文件

4,运行下面的命令即可看出简单的评测图

pprof --text programeName profile

 更复杂的操作看pprof的help信息。

以上是关于如何使用gprof对软件做profiling的主要内容,如果未能解决你的问题,请参考以下文章

如何使用oprofile对软件做profiling

[转]程序进行性能分析工具gprof使用入门

GNU profiler(gprof)使用

GNU profiler(gprof)使用

Linux性能调优之gprof和oprofile

如何开始和停止为 gprof 收集配置文件数据