From 481f5421006f2aec6c9ee5fb0a4e296944c25d7a Mon Sep 17 00:00:00 2001 From: Pavol Vaskovic Date: Wed, 26 Apr 2017 16:14:59 +0200 Subject: [PATCH 1/3] Support multiple prefix filters --- benchmark/scripts/Benchmark_Driver | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/benchmark/scripts/Benchmark_Driver b/benchmark/scripts/Benchmark_Driver index 637e02fc425bf..dc2f4d8b8480d 100755 --- a/benchmark/scripts/Benchmark_Driver +++ b/benchmark/scripts/Benchmark_Driver @@ -121,8 +121,10 @@ def instrument_test(driver_path, test, num_samples): def get_tests(driver_path, args): """Return a list of available performance tests""" tests = subprocess.check_output([driver_path, '--list']).split()[2:] - if args.filter: - return filter(lambda name: name.startswith(args.filter), tests) + if args.filters: + return sorted(list(set([ name + for prefix in args.filters + for name in tests if name.startswith(prefix) ]))) if not args.benchmarks: return tests return sorted(list(set(tests).intersection(set(args.benchmarks)))) @@ -363,7 +365,7 @@ def main(): default=[], help='benchmark to run (default: all)', nargs='*', metavar="BENCHMARK") benchmarks_group.add_argument( - '-f', '--filter', + '-f', '--filter', dest='filters', nargs='*', help='run all tests whose name starts with PREFIX', metavar="PREFIX") parent_parser.add_argument( '-t', '--tests', From 6d9de4ca7084cdbd8f45389cd6c0d5909c9d2488 Mon Sep 17 00:00:00 2001 From: Pavol Vaskovic Date: Wed, 26 Apr 2017 21:12:59 +0200 Subject: [PATCH 2/3] Multiple filters are specified by repeated -f Updated usage documentation to reflect this. --- benchmark/scripts/Benchmark_Driver | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/benchmark/scripts/Benchmark_Driver b/benchmark/scripts/Benchmark_Driver index dc2f4d8b8480d..557ba8b181fd7 100755 --- a/benchmark/scripts/Benchmark_Driver +++ b/benchmark/scripts/Benchmark_Driver @@ -352,7 +352,7 @@ def positive_int(value): def main(): parser = argparse.ArgumentParser( - epilog='Example: ./Benchmark_Driver run -i 5 -f Array' + epilog='Example: ./Benchmark_Driver run -i 5 -f Prefix -f Suffix -f Drop' ) subparsers = parser.add_subparsers( title='Swift benchmark driver commands', @@ -365,8 +365,9 @@ def main(): default=[], help='benchmark to run (default: all)', nargs='*', metavar="BENCHMARK") benchmarks_group.add_argument( - '-f', '--filter', dest='filters', nargs='*', - help='run all tests whose name starts with PREFIX', metavar="PREFIX") + '-f', '--filter', dest='filters', action='append', + help='run all tests whose name starts with PREFIX, '+ + 'multiple filters are supported', metavar="PREFIX") parent_parser.add_argument( '-t', '--tests', help='directory containing Benchmark_O{,none,unchecked} ' + From 2f8f11801a8a42e21b887cb637e9d0ab84c0c140 Mon Sep 17 00:00:00 2001 From: Pavol Vaskovic Date: Thu, 4 May 2017 18:07:25 +0200 Subject: [PATCH 3/3] Filters are now regullar expression patterns --- benchmark/scripts/Benchmark_Driver | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/benchmark/scripts/Benchmark_Driver b/benchmark/scripts/Benchmark_Driver index 557ba8b181fd7..817dd3b629905 100755 --- a/benchmark/scripts/Benchmark_Driver +++ b/benchmark/scripts/Benchmark_Driver @@ -122,9 +122,9 @@ def get_tests(driver_path, args): """Return a list of available performance tests""" tests = subprocess.check_output([driver_path, '--list']).split()[2:] if args.filters: - return sorted(list(set([ name - for prefix in args.filters - for name in tests if name.startswith(prefix) ]))) + regexes = [re.compile(pattern) for pattern in args.filters] + return sorted(list(set([name for pattern in regexes + for name in tests if pattern.match(name)]))) if not args.benchmarks: return tests return sorted(list(set(tests).intersection(set(args.benchmarks)))) @@ -352,7 +352,7 @@ def positive_int(value): def main(): parser = argparse.ArgumentParser( - epilog='Example: ./Benchmark_Driver run -i 5 -f Prefix -f Suffix -f Drop' + epilog='Example: ./Benchmark_Driver run -i 5 -f Prefix -f .*Suffix.*' ) subparsers = parser.add_subparsers( title='Swift benchmark driver commands', @@ -366,8 +366,8 @@ def main(): help='benchmark to run (default: all)', nargs='*', metavar="BENCHMARK") benchmarks_group.add_argument( '-f', '--filter', dest='filters', action='append', - help='run all tests whose name starts with PREFIX, '+ - 'multiple filters are supported', metavar="PREFIX") + help='run all tests whose name match regular expression PATTERN, ' + + 'multiple filters are supported', metavar="PATTERN") parent_parser.add_argument( '-t', '--tests', help='directory containing Benchmark_O{,none,unchecked} ' +