Next: , Up: Profiling   [Contents][Index]


5.14.1 Profile Interface

Variable: profile:*timed-functions*

This variable holds a list of all functions that are currently being profiled.

Macro: profile:profile {name | :callers t}*

This macro wraps profiling code around the named functions. As in trace, the names are not evaluated. If a function is already profiled, then the function is unprofiled and reprofiled (useful to notice function redefinition.) A warning is printed for each name that is not a defined function.

If :callers t is specified, then each function that calls this function is recorded along with the number of calls made.

Macro: profile:unprofile {name}*

This macro removes profiling code from the named functions. If no names are supplied, all currently profiled functions are unprofiled.

Macro: profile:profile-all &key :package :callers-p

This macro in effect calls profile:profile for each function in the specified package which defaults to *package*. :callers-p has the same meaning as in profile:profile.

Macro: profile:report-time {name}*

This macro prints a report for each named function of the following information:

  • The total CPU time used in that function for all calls,
  • the total number of bytes consed in that function for all calls,
  • the total number of calls,
  • the average amount of CPU time per call.

Summary totals of the CPU time, consing and calls columns are printed. An estimate of the profiling overhead is also printed (see below). If no names are supplied, then the times for all currently profiled functions are printed.

Macro: profile:reset-time {name}*

This macro resets the profiling counters associated with the named functions. If no names are supplied, then all currently profiled functions are reset.


Next: Profiling Techniques, Up: Profiling   [Contents][Index]