From e414c73877ba63377c3316ecddb8f5d301eee123 Mon Sep 17 00:00:00 2001 From: Zooko O'Whielacronx Date: Sun, 5 Jul 2009 09:29:53 -0700 Subject: [PATCH] directories: update the directory benchmarks to exercise the unpack-and-repack functionality, and add optional profiling --- src/allmydata/test/bench_dirnode.py | 26 ++++++++++++++++---------- 1 file changed, 16 insertions(+), 10 deletions(-) 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() -- 2.45.2