在Linux下从事C/C++软件开发的人,应该都比较熟悉GNU的编译器gcc和调试器gdb,但是对于其剖析工具gprof可能就鲜有耳闻了。这也从一个侧面显示了开发者对软件性能的不重视和对软件优化的不熟悉,也许称他们为初级开发人员更合适些!
也许有些开发人员更习惯于凭经验用脑子猜测软件的瓶颈所在,就像我们更加倾向于用简单的printf来打印调试信息而不愿用gdb调试程序一样,可经验也同时证实,有的时候,程序的行为并不如我们所料的那样,瓶颈常常隐匿于我们的视线之外,所以还是用实际的测试数据来确定瓶颈,更加可靠些。
gprof就是这样一个程序,他通过解析由添加了"-pg"编译选项编译的程序在执行时所产生的剖析数据,生成可读的函数被调用次数和运行时间等信息。而程序员就能够根据这些数据找到一个程序中最耗时的函数,耗时多少,进而确定程序的瓶颈所在,最终采用合理的策略解决之。
至于如何使用gprof没什么好说的,就是编译和连接的时候加上"-pg"选项,接着执行它,等程序退出后你就能在当前路径下得到一个叫作"gmon.out"的文件,这个文件里面保存的就是剖析数据,用"gprof 程序名 剖些数据的文件名"查看结果就行了。更详细的内容,请参考官方的文档和联机帮助(manual page)。
参考链接:
- http://www.linuxfocus.org/ChineseGB/March2005/article371.shtml
阅读(1577) | 评论(4) | 转发(0) |