使用profile来得到程式运行信息
2008-02-23 05:41:38来源:互联网 阅读 ()
使用profile来得到程式运行信息
profile程式能够用来监测程式不同部分(主要是各个函数)的使用时间和调用次数。
因此能够使用这个程式来鉴别程式中那个函数是整个程式的瓶颈,从而能够通过优化这个
函数来提高程式的性能。
Unix/Linux系统提供了GPROF这个profile程式。该程式提供两种信息:
1、程式中每个函数的CPU使用时间。
2、每个函数的调用次数。并提供简单调用关系图。
使用GPROF步骤如下:
1、用gcc或g 编译程式时,使用-pg参数,如:g -pg -o test.out test.cpp
2、执行编译得到的运行程式。如:./test.out
该步骤运行程式的时间会稍慢于正常编译出来的程式执行时间。而且会产生一个
gmon.out文档。
3、使用gprof命令。如:gprof test.out
于是能够在显示器上看到上述信息。
/////////////////////////////////////////////////////////////////////////////
ps1:test.cpp程式使用gprof得到的结果
Flat profile:
Each sample counts as 0.01 seconds.
%
cumulative
self
self
total
time
seconds
seconds
calls
ms/call
ms/call
name
60.00
0.09
0.09
50
1.80
1.80
test2(int)
40.00
0.15
0.06
50
1.20
1.20
test1(int)
%
the percentage of the total running time of the
time
program used by this function.
cumulative a running sum of the number of seconds accounted
seconds
for by this function and those listed above it.
self
the number of seconds accounted for by this
seconds
function alone.
This is the major sort for this
listing.
calls
the number of times this function was invoked, if
this function is profiled, else blank.
self
the average number of milliseconds spent in this
ms/call
function per call, if this function is profiled,
else blank.
total
the average number of milliseconds spent in this
ms/call
function and its descendents per call, if this
function is profiled, else blank.
name
the name of the function.
This is the minor sort
for this listing. The index shows the location of
the function in the gprof listing. If the index is
in parenthesis it shows where it would appear in
the gprof listing if it were to be printed.
Call graph (explanation follows)
granularity: each sample hit covers 4 byte(s) for 6.67% of 0.15 seconds
index % time
self
children
called
name
<spontaneous>
[1]
100.0
0.00
0.15
main [1]
0.09
0.00
50/50
test2(int) [2]
0.06
0.00
50/50
test1(int) [3]
-----------------------------------------------
0.09
0.00
50/50
main [1]
[2]
60.0
0.09
0.00
50
test2(int) [2]
-----------------------------------------------
0.06
0.00
50/50
main [1]
[3]
40.0
0.06
0.00
50
test1(int) [3]
-----------------------------------------------
This table describes the call tree of the program, and was sorted by
the total amount of time spent in each function and its children.
Each entry in this table consists of several lines.
The line with the
index number at the left hand margin lists the current function.
The lines above it list the functions that called this function,
and the lines below it list the functions this one called.
This line lists:
index
A unique number given to each element of the table.
Index numbers are sorted numerically.
The index number is printed next to every function name so
it is easier to look up where the function in the table.
% time
This is the percentage of the `total' time that was spent
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇: C 常用字符串处理函数及使用示例
下一篇: 解析Linux下的并口编程(英文版)
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash