Mercurial > repos > rhope
annotate procprofile.py @ 121:1af91ceaaf49
Fixed memory leak when an output is only attached to a single null input
author | Mike Pavone <pavone@retrodev.com> |
---|---|
date | Thu, 28 Oct 2010 21:04:12 -0400 |
parents | 60906f8803ef |
children |
rev | line source |
---|---|
112
fd23ab2c1a73
Small changes to make profile data a little cleaner
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
1 #!/usr/bin/env python |
fd23ab2c1a73
Small changes to make profile data a little cleaner
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
2 |
fd23ab2c1a73
Small changes to make profile data a little cleaner
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
3 def unescapename(name): |
fd23ab2c1a73
Small changes to make profile data a little cleaner
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
4 trans = {"UN":'_',"AT":'@',"SP":' ',"QN":'?',"PL":'+',"MN":'-',"TM":'*',"DV":'/',"LT":'<',"GT":'>',"NT":'!',"EQ":'=',"PR":"'"} |
fd23ab2c1a73
Small changes to make profile data a little cleaner
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
5 out = '' |
fd23ab2c1a73
Small changes to make profile data a little cleaner
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
6 while (name): |
fd23ab2c1a73
Small changes to make profile data a little cleaner
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
7 before,_,name = name.partition('_') |
fd23ab2c1a73
Small changes to make profile data a little cleaner
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
8 if name: |
fd23ab2c1a73
Small changes to make profile data a little cleaner
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
9 out += before[:-2] |
fd23ab2c1a73
Small changes to make profile data a little cleaner
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
10 key = before[-2:] |
fd23ab2c1a73
Small changes to make profile data a little cleaner
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
11 if key in trans: |
fd23ab2c1a73
Small changes to make profile data a little cleaner
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
12 out += trans[key] |
fd23ab2c1a73
Small changes to make profile data a little cleaner
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
13 else: |
fd23ab2c1a73
Small changes to make profile data a little cleaner
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
14 out += key+_ |
fd23ab2c1a73
Small changes to make profile data a little cleaner
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
15 else: |
fd23ab2c1a73
Small changes to make profile data a little cleaner
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
16 out += before |
fd23ab2c1a73
Small changes to make profile data a little cleaner
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
17 return out.replace('__', '_') |
fd23ab2c1a73
Small changes to make profile data a little cleaner
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
18 |
fd23ab2c1a73
Small changes to make profile data a little cleaner
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
19 |
fd23ab2c1a73
Small changes to make profile data a little cleaner
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
20 names = [unescapename(line.strip()) for line in open('workernames.txt', 'r')] |
fd23ab2c1a73
Small changes to make profile data a little cleaner
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
21 records = [] |
fd23ab2c1a73
Small changes to make profile data a little cleaner
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
22 |
fd23ab2c1a73
Small changes to make profile data a little cleaner
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
23 data = open('profiler.txt', 'r') |
fd23ab2c1a73
Small changes to make profile data a little cleaner
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
24 |
fd23ab2c1a73
Small changes to make profile data a little cleaner
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
25 for line in data: |
fd23ab2c1a73
Small changes to make profile data a little cleaner
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
26 funcid,_,rest = line[len('Func: '):].partition('\tCount: ') |
fd23ab2c1a73
Small changes to make profile data a little cleaner
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
27 count,_,rest = rest.partition('\tTime: ') |
fd23ab2c1a73
Small changes to make profile data a little cleaner
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
28 total,_,rest = rest.partition('\tAvg: ') |
fd23ab2c1a73
Small changes to make profile data a little cleaner
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
29 avg,_,rest = rest.partition('\tSelf: ') |
116 | 30 self,_,rest = rest.partition('\tAvg: ') |
31 selfavg,_,nestcount = rest.partition('\tNested Count: ') | |
32 records.append((names[int(funcid)], int(count), int(total), float(avg), int(self), float(selfavg), int(nestcount))) | |
112
fd23ab2c1a73
Small changes to make profile data a little cleaner
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
33 |
fd23ab2c1a73
Small changes to make profile data a little cleaner
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
34 |
fd23ab2c1a73
Small changes to make profile data a little cleaner
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
35 records.sort(key=lambda el: el[3]) |
fd23ab2c1a73
Small changes to make profile data a little cleaner
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
36 |
fd23ab2c1a73
Small changes to make profile data a little cleaner
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
37 print 'Func\tCount\tTotal(us)\tAvg(us)\tSelf(us)\tSelf Avg(us)' |
fd23ab2c1a73
Small changes to make profile data a little cleaner
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
38 for record in records: |
116 | 39 print '%s\t%d\t%d\t%f\t%d\t%f\t%d' % record |
112
fd23ab2c1a73
Small changes to make profile data a little cleaner
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
40 |
fd23ab2c1a73
Small changes to make profile data a little cleaner
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
41 |
fd23ab2c1a73
Small changes to make profile data a little cleaner
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
42 |