From: Zooko O'Whielacronx <zooko@zooko.com>
Date: Sun, 5 Jul 2009 16:29:53 +0000 (-0700)
Subject: directories: update the directory benchmarks to exercise the unpack-and-repack functi... 
X-Git-Url: https://git.rkrishnan.org/%5B/%5D%20/using.html?a=commitdiff_plain;h=e414c73877ba63377c3316ecddb8f5d301eee123;p=tahoe-lafs%2Ftahoe-lafs.git

directories: update the directory benchmarks to exercise the unpack-and-repack functionality, and add optional profiling
---

diff --git a/src/allmydata/test/bench_dirnode.py b/src/allmydata/test/bench_dirnode.py
index ae48a550..e72fbbc0 100644
--- a/src/allmydata/test/bench_dirnode.py
+++ b/src/allmydata/test/bench_dirnode.py
@@ -1,4 +1,4 @@
-import os, random
+import hotshot.stats, os, random
 
 from pyutil import benchutil, randutil # http://allmydata.org/trac/pyutil
 
@@ -85,17 +85,23 @@ def pack(N):
 def unpack(N):
     return testdirnode._unpack_contents(packstr)
 
-def run_benchmarks():
-    print "benchmarking %s" % (unpack,)
-    benchutil.bench(unpack, initfunc=init_for_unpack, TOPXP=12)
-    print "benchmarking %s" % (pack,)
-    benchutil.bench(pack, initfunc=init_for_pack, TOPXP=12)
+def unpack_and_repack(N):
+    return testdirnode._pack_contents(testdirnode._unpack_contents(packstr))
+
+def run_benchmarks(profile=False):
+    for (func, initfunc) in [(unpack, init_for_unpack), (pack, init_for_pack), (unpack_and_repack, init_for_unpack)]:
+        print "benchmarking %s" % (func,)
+        benchutil.bench(unpack_and_repack, initfunc=init_for_unpack, TOPXP=12, profile=profile, profresults="bench_dirnode.prof")
+
+def print_stats():
+    s = hotshot.stats.load("bench_dirnode.prof")
+    s.strip_dirs().sort_stats("time").print_stats(32)
 
 def prof_benchmarks():
-    import hotshot
-    prof = hotshot.Profile("bench_dirnode.prof")
-    prof.runcall(run_benchmarks)
-    prof.close()
+    # This requires pyutil >= v1.3.34.
+    run_benchmarks(profile=True)
 
 if __name__ == "__main__":
     run_benchmarks()
+    # prof_benchmarks()
+    # print_stats()