From 5359ca2f9e8708245bce5ac6e9538d6db45abbcb Mon Sep 17 00:00:00 2001 From: Joseph Hunkeler Date: Tue, 31 Jan 2023 14:51:46 -0500 Subject: Initial commit --- benchstrace/cli.py | 54 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 benchstrace/cli.py (limited to 'benchstrace/cli.py') diff --git a/benchstrace/cli.py b/benchstrace/cli.py new file mode 100644 index 0000000..caa4c19 --- /dev/null +++ b/benchstrace/cli.py @@ -0,0 +1,54 @@ +from argparse import ArgumentParser +from .benchmark import Benchmark +import sys + + +def prof_mode(args): + result = Benchmark(args.COMMAND, passes=args.passes, setup=args.setup, teardown=args.teardown) + + print(f"Records: {result.count}") + if args.output_file: + result.save(args.output_file, clobber=args.clobber) + return 0 + + +def diff_mode(args): + left = Benchmark() + left.load(args.left) + right = Benchmark() + right.load(args.right) + left.diff(right) + + print("\nSUMMARY\n") + left.diff_average(right) + left.diff_total(right) + return 0 + + +def main(): + parser = ArgumentParser() + subparsers = parser.add_subparsers() + + parser_prof = subparsers.add_parser("prof") + parser_prof.add_argument("-o", "--output_file", type=str) + parser_prof.add_argument("-c", "--clobber", action='store_true') + parser_prof.add_argument("-p", "--passes", type=int, default=1) + parser_prof.add_argument("-s", "--setup", type=str) + parser_prof.add_argument("-t", "--teardown", type=str) + parser_prof.add_argument("COMMAND") + parser_prof.set_defaults(func=prof_mode) + + parser_diff = subparsers.add_parser("diff") + parser_diff.add_argument("left") + parser_diff.add_argument("right") + parser_diff.set_defaults(func=diff_mode) + + args = parser.parse_args() + if len(sys.argv) < 2: + parser.print_help() + exit(0) + + args.func(args) + +if __name__ == "__main__": + sys.exit(main()) -- cgit