aboutsummaryrefslogtreecommitdiff
path: root/benchstrace/cli.py
diff options
context:
space:
mode:
authorJoseph Hunkeler <jhunkeler@gmail.com>2023-01-31 14:51:46 -0500
committerJoseph Hunkeler <jhunkeler@gmail.com>2023-01-31 15:13:15 -0500
commit5359ca2f9e8708245bce5ac6e9538d6db45abbcb (patch)
treedff873e38625f0ba800df5c52e5e087c13769624 /benchstrace/cli.py
downloadbenchstrace-5359ca2f9e8708245bce5ac6e9538d6db45abbcb.tar.gz
Initial commit
Diffstat (limited to 'benchstrace/cli.py')
-rw-r--r--benchstrace/cli.py54
1 files changed, 54 insertions, 0 deletions
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())