home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 January / usenetsourcesnewsgroupsinfomagicjanuary1994.iso / sources / misc / volume8 / prof.msc / README < prev    next >
Text File  |  1989-08-19  |  2KB  |  47 lines

  1. Included here is the source for an execution profiling system that can
  2. be used with the Microsoft C or the Microsoft Quick C compiler.  It
  3. gives the time percentage a program spends in different functions.  It
  4. is an indispensable tool when trying to optimise a program.  The system
  5. has been tested with Microsoft C Version 5.00.
  6.  
  7. In order to use the profiler first create the object files sprof.obj,
  8. lprof.obj, mprof.obj and cprof.obj by typing ``make''.  The makefile
  9. supplied expects a Un*x compatible linker, so if you are using the one
  10. that came with the compiler do the compilations by hand.
  11.  
  12. Compile your program in such a way as to create a linker map file.  To
  13. do this link your program with the -Fm option of cl or the /MAP option
  14. of the linker.  The appropriate [slmc]prof.obj module has to be linked
  15. together with the rest of the program.  The first letter of the module
  16. indicates the memory model in use.  The program should call the
  17. function prof_start( argv[0] ) for versions of MS-DOS above or equal to
  18. 3.00 or prof_start( .map file name ) for MS-DOS versions before 3.00 in
  19. order to start profiling. When the program finishes the profiler
  20. automatically produces a prof.out file that contains the names of all
  21. public symbols and the number of hits for each one.
  22.  
  23. You can read the results directly from the prof.out file, or you can
  24. summarize them using profprt.  Profprt reads the prof.out file (or
  25. another file if specified) and produces a list of hits and percentages
  26. for the functions for which hits were recorded. If given a -h option it
  27. also produces a histogram of the relative timings.
  28.  
  29. A small test program is included to check the profiler functioning. It
  30. generally found the profiler results to be within 1% of the expected
  31. results on an 8MHz PC.
  32.  
  33. The profiler is all written in C utilizing the ability to create
  34. interrupt handlers in C. It finds the addresses of the functions from
  35. the linker map file.  It should not be very hard to modify the source
  36. for other compilers.  Keep in mind that functions declared as static
  37. are not included in the map file, thus will not be profiled and plan
  38. accordingly.  One solution is to compile with -Dstatic= if the naming
  39. scheme used allows it.  Pay attention to quantization errors and to
  40. errors due to incorrectly specified boundaries. Portions of the code
  41. that are executed with interrupts disabled will not be profiled.
  42.  
  43. Diomidis D. Spinellis (dds@cc.ic.ac.uk)
  44. Myrsinis 1
  45. GR-145 62 Kifisia
  46. GREECE
  47.