[comp.lang.c] Announcement for the C profiler for MS-DOS

dds%CC.IC.AC.UK@CUNYVM.CUNY.EDU (Diomidis D Spinellis) (11/27/88)

I have posted the source code for a C profiler to comp.sources.misc.
This is the README file of the distribution.

Included here is the source for an execution profiling system that can be
used with the Microsoft C or the Microsoft Quick C compiler. It can be
used, to give the time percentage, a program spends in different functions.
It is an indispensible tool when trying to optimise a program. It has been
tested with MSC Version 5.00. In order to use it the appropriate [slmc]prof.obj
module has to be linked together with the rest of the program. The first
letter of the module indicates the memory model in use. The user should
execute the function call prof_start( argv[0] ) for MS-DOS 3.00+ or
prof_start( "progpath.map" ) for versions before 3.00 in order to start
profiling. When the program finishes the profiler automatically produces a
prof.out file that contains the names of all public symbols and the number of
hits for each one.

The program profprt reads the prof.out file (or another file if specified) and
produces a list of hits and percentages for the functions for which hits were
recorder. If given a -h option it also produces a histogram of the relative
timings.

A small test program is included to check the profiler functioning. It
generally found the profiler results to be within 1% of the theoretical
expected results on an 8MHz PC.

The profiler is all written in C utilising the ability to create interrupt
handlers in C. It finds the addresses of the functions from the linker
map file. Therefore the program to be profiled must be linked with the -Fm
option of cl or the /MAP option of the linker. In addition the user has to
keep in mind that functions declared as static are not included in the map
file, will not be profiled and should plan accordingly. One should also pay
attention to quantisation errors and errors due to incerrectly specified
boundaries. Portions of the code that are executed with interrupts dissabled
will not be profiled.

--
Diomidis D Spinellis        dds@cc.ic.ac.uk