(gprof.info)Flat Profile


Next: Call Graph Prev: Invoking Up: Top

How to Understand the Flat Profile
**********************************

   The "flat profile" shows the total amount of time your program spent
executing each function.  Unless the `-z' option is given, functions
with no apparent time spent in them, and no apparent calls to them, are
not mentioned.  Note that if a function was not compiled for profiling,
and didn't run long enough to show up on the program counter histogram,
it will be indistinguishable from a function that was never called.

   This is part of a flat profile for a small program:

     Flat profile:
     
     Each sample counts as 0.01 seconds.
       %   cumulative   self              self     total
      time   seconds   seconds    calls  ms/call  ms/call  name
      33.34      0.02     0.02     7208     0.00     0.00  open
      16.67      0.03     0.01      244     0.04     0.12  offtime
      16.67      0.04     0.01        8     1.25     1.25  memccpy
      16.67      0.05     0.01        7     1.43     1.43  write
      16.67      0.06     0.01                             mcount
       0.00      0.06     0.00      236     0.00     0.00  tzset
       0.00      0.06     0.00      192     0.00     0.00  tolower
       0.00      0.06     0.00       47     0.00     0.00  strlen
       0.00      0.06     0.00       45     0.00     0.00  strchr
       0.00      0.06     0.00        1     0.00    50.00  main
       0.00      0.06     0.00        1     0.00     0.00  memcpy
       0.00      0.06     0.00        1     0.00    10.11  print
       0.00      0.06     0.00        1     0.00     0.00  profil
       0.00      0.06     0.00        1     0.00    50.00  report
     ...

The functions are sorted by decreasing run-time spent in them.  The
functions `mcount' and `profil' are part of the profiling aparatus and
appear in every flat profile; their time gives a measure of the amount
of overhead due to profiling.

   The sampling period estimates the margin of error in each of the time
figures.  A time figure that is not much larger than this is not
reliable.  In this example, the `self seconds' field for `mcount' might
well be `0' or `0.04' in another run.  Note: Sampling Error, for a
complete discussion.

   Here is what the fields in each line mean:

`% time'
     This is the percentage of the total execution time your program
     spent in this function.  These should all add up to 100%.

`cumulative seconds'
     This is the cumulative total number of seconds the computer spent
     executing this functions, plus the time spent in all the functions
     above this one in this table.

`self seconds'
     This is the number of seconds accounted for by this function alone.
     The flat profile listing is sorted first by this number.

`calls'
     This is the total number of times the function was called.  If the
     function was never called, or the number of times it was called
     cannot be determined (probably because the function was not
     compiled with profiling enabled), the "calls" field is blank.

`self ms/call'
     This represents the average number of milliseconds spent in this
     function per call, if this function is profiled.  Otherwise, this
     field is blank for this function.

`total ms/call'
     This represents the average number of milliseconds spent in this
     function and its descendants per call, if this function is
     profiled.  Otherwise, this field is blank for this function.

`name'
     This is the name of the function.   The flat profile is sorted by
     this field alphabetically after the "self seconds" field is sorted.


automatically generated by info2www