使用profile来得到程式运行信息

2008-02-23 05:41:38来源:互联网 阅读 ()

新老客户大回馈,云服务器低至5折


  使用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下的并口编程(英文版)