GNU Info

Info Node: (python2.1-lib.info)HotProfile Class

(python2.1-lib.info)HotProfile Class


Prev: OldProfile Class Up: Profiler Extensions
Enter node , (file) or (file)node

HotProfile Class
----------------

_This is deprecated in Python 2.1.2.  This class will be removed in
Python 2.2._

This profiler is the fastest derived profile example.  It does not
calculate caller-callee relationships, and does not calculate
cumulative time under a function.  It only calculates time spent in a
function, so it runs very quickly (re: very low overhead).  In truth,
the basic profiler is so fast, that is probably not worth the savings
to give up the data, but this class still provides a nice example.

     class HotProfile(Profile):
     
         def trace_dispatch_exception(self, frame, t):
             rt, rtt, rfn, rframe, rcur = self.cur
             if rcur and not rframe is frame:
                 return self.trace_dispatch_return(rframe, t)
             return 0
     
         def trace_dispatch_call(self, frame, t):
             self.cur = (t, 0, frame, self.cur)
             return 1
     
         def trace_dispatch_return(self, frame, t):
             rt, rtt, frame, rcur = self.cur
     
             rfn = `frame.f_code`
     
             pt, ptt, pframe, pcur = rcur
             self.cur = pt, ptt+rt, pframe, pcur
     
             if self.timings.has_key(rfn):
                 nc, tt = self.timings[rfn]
                 self.timings[rfn] = nc + 1, rt + rtt + tt
             else:
                 self.timings[rfn] =      1, rt + rtt
     
             return 1
     
         def snapshot_stats(self):
             self.stats = {}
             for func in self.timings.keys():
                 nc, tt = self.timings[func]
                 nor_func = self.func_normalize(func)
                 self.stats[nor_func] = nc, nc, tt, 0, {}


automatically generated by info2www version 1.2.2.9