Refactor minify-tool.py and add run_bootstrap_benchmark.py
Rename to minify_tool.py so it can be imported in
run_bootstrap_benchmark.py.
Rename minify_tool.main() -> minify_tool.minify_tool(), and take
function parameters instead of using parser.parse_args().
Add non-None default values to the argument parser to make it possible
to keyword-argument unpacking `**vars(parser.parse_args())` for the main
invocation.
Add `debug` and `build` parameters, default True, that are set to False
in run_bootstrap_benchmark.py.
Change-Id: I61d70ae37b9ac433e13b107cc5c9d29225a7740c
diff --git a/tools/minify-tool.py b/tools/minify_tool.py
similarity index 78%
rename from tools/minify-tool.py
rename to tools/minify_tool.py
index e5383f0..08b2ada 100755
--- a/tools/minify-tool.py
+++ b/tools/minify_tool.py
@@ -15,6 +15,7 @@
import os
import re
import sys
+import time
import toolhelper
import utils
import zipfile
@@ -28,17 +29,23 @@
parser = argparse.ArgumentParser(description=__doc__.strip(),
formatter_class=argparse.RawTextHelpFormatter)
parser.add_argument(
- '-i', '--input-jar',
+ '-i', '--input-jar', default=utils.R8_JAR,
help='Input JAR to use (default: build/libs/r8.jar)')
parser.add_argument(
'-o', '--output-jar',
help='Path to output JAR (default: build/libs/<MainClass>-min.jar)')
parser.add_argument(
- '-l', '--lib',
+ '-l', '--lib', default=RT,
help='Path to rt.jar to use instead of OpenJDK 1.8')
parser.add_argument(
'-m', '--mainclass',
help='Create/overwrite MANIFEST.MF with the given Main-Class')
+parser.add_argument(
+ '-O', '--no-debug', dest='debug', action='store_false',
+ help='Disable assertions when running R8')
+parser.add_argument(
+ '--print-runtimeraw', metavar='BENCHMARKNAME',
+ help='Print "<BENCHMARKNAME>(RunTimeRaw): <elapsed> ms" at the end')
def generate_output_name(input_jar, mainclass):
if not mainclass:
@@ -75,12 +82,10 @@
'No --mainclass specified and no Main-Class in input JAR manifest.')
return mo.group(1)
-def main():
- args = parser.parse_args()
- mainclass = args.mainclass
- input_jar = args.input_jar or utils.R8_JAR
- output_jar = args.output_jar or generate_output_name(input_jar, mainclass)
- lib = args.lib or RT
+def minify_tool(mainclass=None, input_jar=utils.R8_JAR, output_jar=None, lib=RT,
+ debug=True, build=True, print_runtimeraw=None):
+ if output_jar is None:
+ output_jar = generate_output_name(input_jar, mainclass)
with utils.TempDir() as path:
if mainclass:
tmp_input_path = os.path.join(path, 'input.jar')
@@ -97,7 +102,12 @@
'--pg-conf', keep_path,
'--release',
tmp_input_path)
- return toolhelper.run('r8', args)
+ start_time = time.time()
+ return_code = toolhelper.run('r8', args, debug=debug, build=build)
+ if print_runtimeraw:
+ elapsed_ms = 1000 * (time.time() - start_time)
+ print('%s-Total(RunTimeRaw): %s ms' % (print_runtimeraw, elapsed_ms))
+ return return_code
if __name__ == '__main__':
- sys.exit(main())
+ sys.exit(minify_tool(**vars(parser.parse_args())))
diff --git a/tools/run_bootstrap_benchmark.py b/tools/run_bootstrap_benchmark.py
new file mode 100755
index 0000000..0c608f9
--- /dev/null
+++ b/tools/run_bootstrap_benchmark.py
@@ -0,0 +1,23 @@
+#!/usr/bin/env python
+# Copyright (c) 2018, the R8 project authors. Please see the AUTHORS file
+# for details. All rights reserved. Use of this source code is governed by a
+# BSD-style license that can be found in the LICENSE file.
+
+import argparse
+import minify_tool
+import os
+import sys
+import utils
+
+
+PINNED_R8_JAR = os.path.join(utils.REPO_ROOT, 'third_party/r8/r8.jar')
+
+parser = argparse.ArgumentParser()
+parser.add_argument(
+ '--print-runtimeraw', metavar='BENCHMARKNAME',
+ help='Print "<BENCHMARKNAME>(RunTimeRaw): <elapsed> ms" at the end')
+
+
+if __name__ == '__main__':
+ sys.exit(minify_tool.minify_tool(input_jar=PINNED_R8_JAR, debug=False,
+ build=False, **vars(parser.parse_args())))