app/django/bin/profiling/gather_profile_stats.py
changeset 54 03e267d67478
child 323 ff1a9aa48cfd
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/app/django/bin/profiling/gather_profile_stats.py	Fri Jul 18 18:22:23 2008 +0000
@@ -0,0 +1,34 @@
+"""
+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])