In case anyone else is interested, here are two quick pointers on running pybench tests under the profiler. 1. To build Python with profiling hooks (Unix only): LDFLAGS="-pg" OPT="-pg" configure make When you run python it produces a gmon.out file. To run gprof, pass it the profile-enable executable and gmon.out. It's spit out the results on stdout. 2. Use this handy script (below) to run a single pybench test under the profiler and produce the output. Jeremy """Tool to automate profiling of individual pybench benchmarks""" import os import re import tempfile PYCVS = "/home/jeremy/src/python/dist/src/build-pg/python" PY152 = "/home/jeremy/src/python/dist/Python-1.5.2/build-pg/python" rx_grep = re.compile('^([^:]+):(.*)') rx_decl = re.compile('class (\w+)\(\w+\):') def find_bench(name): p = os.popen("grep %s *.py" % name) for line in p.readlines(): mo = rx_grep.search(line) if mo is None: continue file, text = mo.group(1, 2) mo = rx_decl.search(text) if mo is None: continue klass = mo.group(1) return file, klass return None, None def write_profile_code(file, klass, path): i = file.find(".") file = file[:i] f = open(path, 'w') print >> f, "import %s" % file print >> f, "%s.%s().run()" % (file, klass) f.close() def profile(interp, path, result): if os.path.exists("gmon.out"): os.unlink("gmon.out") os.system("PYTHONPATH=. %s %s" % (interp, path)) if not os.path.exists("gmon.out"): raise RuntimeError, "gmon.out not generated by %s" % interp os.system("gprof %s gmon.out > %s" % (interp, result)) def main(bench_name): file, klass = find_bench(bench_name) if file is None: raise ValueError, "could not find class %s" % bench_name code_path = tempfile.mktemp() write_profile_code(file, klass, code_path) profile(PYCVS, code_path, "%s.cvs.prof" % bench_name) profile(PY152, code_path, "%s.152.prof" % bench_name) os.unlink(code_path) if __name__ == "__main__": import sys main(sys.argv[1])
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4