#!/usr/bin/env python """ A simple bench runner which delegates to the ./dotest.py test driver to run the benchmarks defined in the list named 'benches'. You need to hand edit 'benches' to modify/change the command lines passed to the test driver. Use the following to get only the benchmark results in your terminal output: ./bench.py -e /Volumes/data/lldb/svn/regression/build/Debug/lldb -x '-F Driver::MainLoop()' 2>&1 | grep -P '^lldb.*benchmark:' See also bench-history. """ import os, sys import re from optparse import OptionParser # dotest.py invocation with no '-e exe-path' uses lldb as the inferior program, # unless there is a mentioning of custom executable program. benches = [ # Measure startup delays creating a target, setting a breakpoint, and run to breakpoint stop. './dotest.py -v +b %E %X -n -p TestStartupDelays.py', # Measure 'frame variable' response after stopping at a breakpoint. './dotest.py -v +b %E %X -n -p TestFrameVariableResponse.py', # Measure stepping speed after stopping at a breakpoint. './dotest.py -v +b %E %X -n -p TestSteppingSpeed.py', # Measure expression cmd response with a simple custom executable program. './dotest.py +b -n -p TestExpressionCmd.py', # Attach to a spawned process then run disassembly benchmarks. './dotest.py -v +b -n %E -p TestDoAttachThenDisassembly.py' ] def main(): """Read the items from 'benches' and run the command line one by one.""" parser = OptionParser(usage="""\ %prog [options] Run the standard benchmarks defined in the list named 'benches'.\ """) parser.add_option('-e', '--executable', type='string', action='store', dest='exe', help='The target program launched by lldb.') parser.add_option('-x', '--breakpoint-spec', type='string', action='store', dest='break_spec', help='The lldb breakpoint spec for the target program.') # Parses the options, if any. opts, args = parser.parse_args() print "Starting bench runner...." for item in benches: command = item.replace('%E', '-e "%s"' % opts.exe if opts.exe else '') command = command.replace('%X', '-x "%s"' % opts.break_spec if opts.break_spec else '') print "Running %s" % (command) os.system(command) print "Bench runner done." if __name__ == '__main__': main()