/*
* gprof
*/
用于分析程序的执行和确定应用程序中的"热点"在什么位置。
应用程序的热点是程序运行时需要最多处理时间的函数。通常,它们是最为数据密集型函数,但是情况不总是如此。I/O密集型的函数也会增加处理时间。
看gprof输出的报告,对找出程序哪里占用CPU高时很有用。
为了对应用程序使用gprof,必须确保使用 -pg 参数编译希望监视的函数。
用这个参数编译源代码,就会为程序中的每个函数插入对mcount子例程的调用。当应用程序运行时,mcount子例程创建一个调用图表简档文件,称为gmon.out,它包含应用程序中每个函数的计时信息。
运行应用程序时要小心,因为每次运行都会覆盖gmon.out文件。如果希望进行多次采样,就必须在gpro的命令行中包含输出文件的名称并且在每次采样时使用不同的文件名。
程序测试完成之后,使用gprof程序查看调用图表简档文件,分析每个函数花费的时间。
gprof的输出包含三个报告:
1.一般报告,它列出总执行时间和所有函数的调用次数。
2.按照每个函数及其子函数花费的时间进行排序的函数清单。
3.循环清单,显示循环成员和它们的调用次数。
示例:
gcc -pg -o demo demo.c
./demo
程序结束后,在相同的目录下创建gmon.out调用图表简档文件。然后可以对demo程序运行gprof程序。
gprof demo
示例完毕。