我们在写程序,特别是嵌入式程序的时候,通常需要对程序的性能进行分析,以便程序能够更快更好地运行,达到实时(real-time)的目的。如果程序很 大,分析起来就很困难。如果有个工具能够自动进行程序的性能分析,那就最好了。这里介绍一种Linux下程序的Profiling工具--- GNU gprof。
GNU gprof能够打印出程序运行中各个函数消耗的时间,可以帮助程序员找出众多函数中耗时最多的函数。产生程序运行时候的函数调用关系,包括调用次数,可以 帮助程序员分析程序的运行流程。有 了函数的调用关系,这会让开发人员大大提高工作效率,不用费神地去一点点找出程序的运行流程,这对小程序来说可能效果不是很明显,但对于有几万,几十万代 码量的工程来说,效率是毋庸置疑的!而且这个功能对于维护旧代码或者是分析Open Source来说那是相当诱人的,有了调用图,对程序的运行框架也就有了一个大体了解,知道了程序的“骨架“,分析它也就不会再那么茫然,尤其是对自己不 熟悉的代码和Open Source。
gprof的基本用法:
1. 使用 -pg 选项编译和链接你的应用程序
在gcc编译程序的时候,加上-pg选项,例如:
gcc -pg -o test test.c
这样就生成了可执行文件test。如果是大项目,就在makefile里面修改编译选项,-pg放在那里都行。
2. 执行你的应用程序使之生成供gprof 分析的数据
运行刚才的程序:./test,这样就生成了一个gmon.out文件,该文件就包含了profiling的数据。
3. 使用gprof 分析你的应用程序生成的数据
gprof test gmon.out > profile.txt
使用上面的命令,gprof就可以分析程序test的性能,将profiling的结果放在profile.txt文件中,打开就可以看到分析的结果。通 过对结果的分析来改进我们的程序,从而达到我们的目的。
win下面可以用intel的vtune,或者visual studio自带的profile工具。我觉得对于图像处理而言,除非算法的瓶颈 在数据IO上,否则多线程很难有优化作用,因为线程调度的开销无法抵消。当然双核处理器除外。
本文来自: 龙宇网() 详细出处参考:
阅读(10500) | 评论(1) | 转发(2) |