HotProfile Class -- Python library reference



Prev: OldProfile Class Up: Profiler Extensions Top: Top

10.8.2. HotProfile Class

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, {}



Prev: OldProfile Class Up: Profiler Extensions Top: Top