|
Revision 7658, 1.0 kB
(checked in by adrian, 3 months ago)
|
Added shebang line to bin/profiling/gather_profile_stats.py. Refs #7268
|
- Property svn:eol-style set to
native
- Property svn:keywords set to
LastChangedRevision
|
| Line | |
|---|
| 1 |
#!/usr/bin/env python |
|---|
| 2 |
|
|---|
| 3 |
""" |
|---|
| 4 |
gather_profile_stats.py /path/to/dir/of/profiles |
|---|
| 5 |
|
|---|
| 6 |
Note that the aggregated profiles must be read with pstats.Stats, not |
|---|
| 7 |
hotshot.stats (the formats are incompatible) |
|---|
| 8 |
""" |
|---|
| 9 |
|
|---|
| 10 |
from hotshot import stats |
|---|
| 11 |
import pstats |
|---|
| 12 |
import sys, os |
|---|
| 13 |
|
|---|
| 14 |
def gather_stats(p): |
|---|
| 15 |
profiles = {} |
|---|
| 16 |
for f in os.listdir(p): |
|---|
| 17 |
if f.endswith('.agg.prof'): |
|---|
| 18 |
path = f[:-9] |
|---|
| 19 |
prof = pstats.Stats(os.path.join(p, f)) |
|---|
| 20 |
elif f.endswith('.prof'): |
|---|
| 21 |
bits = f.split('.') |
|---|
| 22 |
path = ".".join(bits[:-3]) |
|---|
| 23 |
prof = stats.load(os.path.join(p, f)) |
|---|
| 24 |
else: |
|---|
| 25 |
continue |
|---|
| 26 |
print "Processing %s" % f |
|---|
| 27 |
if path in profiles: |
|---|
| 28 |
profiles[path].add(prof) |
|---|
| 29 |
else: |
|---|
| 30 |
profiles[path] = prof |
|---|
| 31 |
os.unlink(os.path.join(p, f)) |
|---|
| 32 |
for (path, prof) in profiles.items(): |
|---|
| 33 |
prof.dump_stats(os.path.join(p, "%s.agg.prof" % path)) |
|---|
| 34 |
|
|---|
| 35 |
if __name__ == '__main__': |
|---|
| 36 |
gather_stats(sys.argv[1]) |
|---|