diff options
Diffstat (limited to 'webapp/django/bin/profiling/gather_profile_stats.py')
-rw-r--r-- | webapp/django/bin/profiling/gather_profile_stats.py | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/webapp/django/bin/profiling/gather_profile_stats.py b/webapp/django/bin/profiling/gather_profile_stats.py new file mode 100644 index 0000000000..0fd2b7fca9 --- /dev/null +++ b/webapp/django/bin/profiling/gather_profile_stats.py @@ -0,0 +1,36 @@ +#!/usr/bin/env python + +""" +gather_profile_stats.py /path/to/dir/of/profiles + +Note that the aggregated profiles must be read with pstats.Stats, not +hotshot.stats (the formats are incompatible) +""" + +from hotshot import stats +import pstats +import sys, os + +def gather_stats(p): + profiles = {} + for f in os.listdir(p): + if f.endswith('.agg.prof'): + path = f[:-9] + prof = pstats.Stats(os.path.join(p, f)) + elif f.endswith('.prof'): + bits = f.split('.') + path = ".".join(bits[:-3]) + prof = stats.load(os.path.join(p, f)) + else: + continue + print "Processing %s" % f + if path in profiles: + profiles[path].add(prof) + else: + profiles[path] = prof + os.unlink(os.path.join(p, f)) + for (path, prof) in profiles.items(): + prof.dump_stats(os.path.join(p, "%s.agg.prof" % path)) + +if __name__ == '__main__': + gather_stats(sys.argv[1]) |