GNU Info

Info Node: (python2.1-lib.info)Profiler Extensions

(python2.1-lib.info)Profiler Extensions


Prev: Calibration Up: Python Profiler
Enter node , (file) or (file)node

Deriving Better Profilers
=========================

The `Profile' class of module `profile' was written so that derived
classes could be developed to extend the profiler.  Rather than
describing all the details of such an effort, I'll just present the
following two examples of derived classes that can be used to do
profiling.  If the reader is an avid Python programmer, then it should
be possible to use these as a model and create similar (and perchance
better) profile classes.

If all you want to do is change how the timer is called, or which timer
function is used, then the basic class has an option for that in the
constructor for the class.  Consider passing the name of a function to
call into the constructor:

     pr = profile.Profile(your_time_func)

The resulting profiler will call `your_time_func()' instead of
`os.times()'.  The function should return either a single number or a
list of numbers (like what `os.times()' returns).  If the function
returns a single time number, or the list of returned numbers has
length 2, then you will get an especially fast version of the dispatch
routine.

Be warned that you _should_ calibrate the profiler class for the timer
function that you choose.  For most machines, a timer that returns a
lone integer value will provide the best results in terms of low
overhead during profiling.  (`os.times()' is _pretty_ bad, 'cause it
returns a tuple of floating point values, so all arithmetic is floating
point in the profiler!).  If you want to substitute a better timer in
the cleanest fashion, you should derive a class, and simply put in the
replacement dispatch method that better handles your timer call, along
with the appropriate calibration constant :-).

OldProfile Class
HotProfile Class

automatically generated by info2www version 1.2.2.9