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.
See section Statistical Inaccuracy of gprof
Output, for a complete discussion.
Here is what the fields in each line mean:
% time
cumulative seconds
self seconds
calls
self ms/call
total ms/call
name