sb-sprof
========

The sb-sprof module provides an alternate profiler which works by taking samples of the program execution at regular intervals, instead of instrumenting functions like profile does. You might find sb-sprof more useful than profile when profiling functions in the common-lisp-package, SBCL internals, or code where the instrumenting overhead is excessive.

This module is known not to work consistently on the Alpha platform, for technical reasons related to the implementation of a machine language idiom for marking sections of code to be treated as atomic by the garbage collector;  However, it should work on other platforms, and the deficiency on the Alpha will eventually be rectified.

Example Usage
-------------

     (require :sb-sprof)
     (sb-sprof:start-profiling)

     (defvar *a* 0)
     (dotimes (i (expt 2 26))
       (setf *a* (logxor *a* (* i 5)
                         (+ *a* i))))

     (sb-sprof:stop-profiling)
     (sb-sprof:report)

The profiler hooks into the disassembler such that instructions which have been sampled are annotated with their relative frequency of sampling.  This information is not stored across different sampling runs.

Functions
---------

     [file fun-sb-sprof-report.texinfo not included]

     [file fun-sb-sprof-reset.texinfo not included]

     [file fun-sb-sprof-start-profiling.texinfo not included]

     [file fun-sb-sprof-stop-profiling.texinfo not included]

Macros
------

     [file macro-sb-sprof-with-profiling.texinfo not included]

Variables
---------

     [file var-sb-sprof-star-max-samples-star.texinfo not included]

     [file var-sb-sprof-star-sample-interval-star.texinfo not included]

Credits
-------

sb-sprof is an SBCL port, with enhancements, of Gerd Moellmann's statistical profiler for CMUCL.