如何使用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的主要内容,如果未能解决你的问题,请参考以下文章