1 import time
2 import pyvision as pv
3
5 '''
6 A simple timer class used to measure and record run times. Each timer has a
7 member variable named table which keeps a log of timing data.
8
9 Usage:
10 timer = pv.Timer()
11
12 ... Do Some Stuff ...
13
14 timer.mark("Event 1")
15
16 ... Do Some Stuff ...
17
18 timer.mark("Event 2")
19
20 print timer
21 -- or --
22 ilog(timer,"TimingData")
23
24 '''
25
27 '''
28 Create and setup the timer. Also creates a mark titled "Timer Created".
29 '''
30 self.table = pv.Table()
31 self.started = False
32 self.i = 0
33 self.mark("Timer Created")
34
35 - def mark(self,event,notes=None):
36 '''
37
38 @param event: a short text description of the event being marked.
39 @param notes: additional notes for this event.
40 @returns: 6-tuple of times in seconds: Wall Clock Time, Time since last mark, Time since creation, CPU time, CPU time since last mark, CPU time since creation
41 '''
42 current = time.time()
43 cpu = time.clock()
44 if self.started == False:
45 self.started = True
46 self.prev = self.start = current
47 self.cpu_prev = self.cpu_start = cpu
48 self.table[self.i,"event"] = event
49 self.table[self.i,"time"] = current
50 self.table[self.i,"current"] = current - self.prev
51 self.table[self.i,"total"] = current - self.start
52 self.table[self.i,"cpu_time"] = cpu
53 self.table[self.i,"cpu_current"] = cpu - self.cpu_prev
54 self.table[self.i,"cpu_total"] = cpu - self.cpu_start
55 self.table[self.i,"notes"] = notes
56
57 rt = current
58 ct = current - self.prev
59 tot = current - self.start
60 crt = cpu
61 cct = cpu - self.cpu_prev
62 ctot = cpu - self.cpu_start
63
64 self.prev = current
65 self.cpu_prev = cpu
66 self.i += 1
67
68 return rt,ct,tot,crt,cct,ctot
69
71 '''Render the timing log to a string.'''
72
73 return self.table.__str__()
74
75 - def save(self,filename):
76 '''Save the timing log to a csv file.'''
77 self.table.save(filename)
78