diff options
Diffstat (limited to 'packages/Python/lldbsuite/test/bench.py')
-rw-r--r-- | packages/Python/lldbsuite/test/bench.py | 74 |
1 files changed, 74 insertions, 0 deletions
diff --git a/packages/Python/lldbsuite/test/bench.py b/packages/Python/lldbsuite/test/bench.py new file mode 100644 index 0000000..ce9c2e7 --- /dev/null +++ b/packages/Python/lldbsuite/test/bench.py @@ -0,0 +1,74 @@ +#!/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. +""" + +from __future__ import print_function +from __future__ import absolute_import + +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() |