app/django/bin/profiling/gather_profile_stats.py
author Sverre Rabbelier <srabbelier@gmail.com>
Wed, 26 Nov 2008 23:55:10 +0000
changeset 593 01f8c7aabb7e
parent 323 ff1a9aa48cfd
permissions -rw-r--r--
Removed cruft from the tests directory The current tests were outdated (they tested code that no longer exists), and were causing the test suite (insofar as it deserves that name) to fail for no reason. Patch by: Sverre Rabbelier

#!/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])