diff options
author | Alexandre Rames <alexandre.rames@linaro.org> | 2015-09-17 13:42:03 +0100 |
---|---|---|
committer | Alexandre Rames <alexandre.rames@linaro.org> | 2015-09-22 15:40:37 +0000 |
commit | 1fb124ab9645056fb7c9b4ea7edb445f8ac2121b (patch) | |
tree | 89fab25d0e0aab9db11ed90cbacb9abeb695e5f1 | |
parent | e9bf8f01d1255c336bcd8777b8ced85bf3346c42 (diff) |
Have coherent benchmark identifiers.
With this patch, benchmarks now have a coherent identifier across scripts and commands.
Change-Id: I12b5059de938182f4a2a8ba2bb5394f53b6fe18b
32 files changed, 146 insertions, 39 deletions
diff --git a/benchmarking/java-ubenchs/benchmarks/deprecated/BubbleSort.java b/benchmarking/java-ubenchs/benchmarks/deprecated/BubbleSort.java index 2e01458..7aa4cd8 100644 --- a/benchmarking/java-ubenchs/benchmarks/deprecated/BubbleSort.java +++ b/benchmarking/java-ubenchs/benchmarks/deprecated/BubbleSort.java @@ -15,6 +15,8 @@ * */ +package benchmarks.deprecated; + import java.lang.System; // This benchmark performs bubble sort in the worst case scenario. diff --git a/benchmarking/java-ubenchs/benchmarks/deprecated/ControlFlow.java b/benchmarking/java-ubenchs/benchmarks/deprecated/ControlFlow.java index 55d94e8..74082a5 100644 --- a/benchmarking/java-ubenchs/benchmarks/deprecated/ControlFlow.java +++ b/benchmarking/java-ubenchs/benchmarks/deprecated/ControlFlow.java @@ -15,6 +15,8 @@ * */ +package benchmarks.deprecated; + import java.lang.System; public class ControlFlow { diff --git a/benchmarking/java-ubenchs/benchmarks/deprecated/DoNothing.java b/benchmarking/java-ubenchs/benchmarks/deprecated/DoNothing.java index 5cf27ef..357b991 100644 --- a/benchmarking/java-ubenchs/benchmarks/deprecated/DoNothing.java +++ b/benchmarking/java-ubenchs/benchmarks/deprecated/DoNothing.java @@ -15,6 +15,8 @@ * */ +package benchmarks.deprecated; + public class DoNothing { public static void main(String[] args) { System.out.println("DoNothing: " + 0); diff --git a/benchmarking/java-ubenchs/benchmarks/deprecated/FactorialDouble.java b/benchmarking/java-ubenchs/benchmarks/deprecated/FactorialDouble.java index 30f274a..aa5762c 100644 --- a/benchmarking/java-ubenchs/benchmarks/deprecated/FactorialDouble.java +++ b/benchmarking/java-ubenchs/benchmarks/deprecated/FactorialDouble.java @@ -15,6 +15,8 @@ * */ +package benchmarks.deprecated; + public class FactorialDouble { public static void main(String[] args) { long before = System.currentTimeMillis(); diff --git a/benchmarking/java-ubenchs/benchmarks/deprecated/FactorialFloat.java b/benchmarking/java-ubenchs/benchmarks/deprecated/FactorialFloat.java index 0697a1f..e9f5ec9 100644 --- a/benchmarking/java-ubenchs/benchmarks/deprecated/FactorialFloat.java +++ b/benchmarking/java-ubenchs/benchmarks/deprecated/FactorialFloat.java @@ -15,6 +15,8 @@ * */ +package benchmarks.deprecated; + public class FactorialFloat { public static void main(String[] args) { long before = System.currentTimeMillis(); diff --git a/benchmarking/java-ubenchs/benchmarks/deprecated/FactorialInt.java b/benchmarking/java-ubenchs/benchmarks/deprecated/FactorialInt.java index 8cfc205..e1f135b 100644 --- a/benchmarking/java-ubenchs/benchmarks/deprecated/FactorialInt.java +++ b/benchmarking/java-ubenchs/benchmarks/deprecated/FactorialInt.java @@ -15,6 +15,8 @@ * */ +package benchmarks.deprecated; + public class FactorialInt { public static void main(String[] args) { long before = System.currentTimeMillis(); diff --git a/benchmarking/java-ubenchs/benchmarks/deprecated/FactorialLong.java b/benchmarking/java-ubenchs/benchmarks/deprecated/FactorialLong.java index ac4a694..6a89b32 100644 --- a/benchmarking/java-ubenchs/benchmarks/deprecated/FactorialLong.java +++ b/benchmarking/java-ubenchs/benchmarks/deprecated/FactorialLong.java @@ -15,6 +15,8 @@ * */ +package benchmarks.deprecated; + public class FactorialLong { public static void main(String[] args) { long before = System.currentTimeMillis(); diff --git a/benchmarking/java-ubenchs/benchmarks/deprecated/GCTest.java b/benchmarking/java-ubenchs/benchmarks/deprecated/GCTest.java index d19c217..7807299 100644 --- a/benchmarking/java-ubenchs/benchmarks/deprecated/GCTest.java +++ b/benchmarking/java-ubenchs/benchmarks/deprecated/GCTest.java @@ -15,6 +15,8 @@ * */ +package benchmarks.deprecated; + import java.lang.System; import java.util.Random; diff --git a/benchmarking/java-ubenchs/benchmarks/deprecated/InstanceTest.java b/benchmarking/java-ubenchs/benchmarks/deprecated/InstanceTest.java index fc1f2ea..9a14870 100644 --- a/benchmarking/java-ubenchs/benchmarks/deprecated/InstanceTest.java +++ b/benchmarking/java-ubenchs/benchmarks/deprecated/InstanceTest.java @@ -15,6 +15,8 @@ * */ +package benchmarks.deprecated; + import java.lang.System; import java.util.ArrayList; import java.util.Random; diff --git a/benchmarking/java-ubenchs/benchmarks/deprecated/JoinTest.java b/benchmarking/java-ubenchs/benchmarks/deprecated/JoinTest.java index 7ac041b..bd0e4a6 100644 --- a/benchmarking/java-ubenchs/benchmarks/deprecated/JoinTest.java +++ b/benchmarking/java-ubenchs/benchmarks/deprecated/JoinTest.java @@ -15,6 +15,8 @@ * */ +package benchmarks.deprecated; + import java.lang.System; import java.lang.Thread; import java.lang.InterruptedException; diff --git a/benchmarking/java-ubenchs/benchmarks/deprecated/LockTest.java b/benchmarking/java-ubenchs/benchmarks/deprecated/LockTest.java index 84c2b3a..476334c 100644 --- a/benchmarking/java-ubenchs/benchmarks/deprecated/LockTest.java +++ b/benchmarking/java-ubenchs/benchmarks/deprecated/LockTest.java @@ -15,6 +15,8 @@ * */ +package benchmarks.deprecated; + import java.lang.System; import org.linaro.bench.IterationsAnnotation; diff --git a/benchmarking/java-ubenchs/benchmarks/deprecated/Loop.java b/benchmarking/java-ubenchs/benchmarks/deprecated/Loop.java index 2df29d8..1f5e0c6 100644 --- a/benchmarking/java-ubenchs/benchmarks/deprecated/Loop.java +++ b/benchmarking/java-ubenchs/benchmarks/deprecated/Loop.java @@ -15,6 +15,8 @@ * */ +package benchmarks.deprecated; + import java.lang.System; // This benchmark performs various loop operations. diff --git a/benchmarking/java-ubenchs/benchmarks/deprecated/Matrix.java b/benchmarking/java-ubenchs/benchmarks/deprecated/Matrix.java index 95f14a2..50b9e95 100644 --- a/benchmarking/java-ubenchs/benchmarks/deprecated/Matrix.java +++ b/benchmarking/java-ubenchs/benchmarks/deprecated/Matrix.java @@ -15,6 +15,8 @@ * */ +package benchmarks.deprecated; + public class Matrix { public static void main(String[] args) { diff --git a/benchmarking/java-ubenchs/benchmarks/deprecated/MatrixDouble.java b/benchmarking/java-ubenchs/benchmarks/deprecated/MatrixDouble.java index 9b67e2e..1a60571 100644 --- a/benchmarking/java-ubenchs/benchmarks/deprecated/MatrixDouble.java +++ b/benchmarking/java-ubenchs/benchmarks/deprecated/MatrixDouble.java @@ -15,6 +15,8 @@ * */ +package benchmarks.deprecated; + public class MatrixDouble { public static void main(String[] args) { diff --git a/benchmarking/java-ubenchs/benchmarks/deprecated/MultiplyAdd.java b/benchmarking/java-ubenchs/benchmarks/deprecated/MultiplyAdd.java index 7ccd587..4cc1f70 100644 --- a/benchmarking/java-ubenchs/benchmarks/deprecated/MultiplyAdd.java +++ b/benchmarking/java-ubenchs/benchmarks/deprecated/MultiplyAdd.java @@ -15,6 +15,8 @@ * */ +package benchmarks.deprecated; + import java.lang.reflect.Method; public class MultiplyAdd { diff --git a/benchmarking/java-ubenchs/benchmarks/deprecated/ObjFactorial.java b/benchmarking/java-ubenchs/benchmarks/deprecated/ObjFactorial.java index e5d8303..1e15b2e 100644 --- a/benchmarking/java-ubenchs/benchmarks/deprecated/ObjFactorial.java +++ b/benchmarking/java-ubenchs/benchmarks/deprecated/ObjFactorial.java @@ -15,6 +15,8 @@ * */ +package benchmarks.deprecated; + import java.lang.System; import java.math.BigInteger; diff --git a/benchmarking/java-ubenchs/benchmarks/deprecated/Pi.java b/benchmarking/java-ubenchs/benchmarks/deprecated/Pi.java index e28b785..4dde44f 100644 --- a/benchmarking/java-ubenchs/benchmarks/deprecated/Pi.java +++ b/benchmarking/java-ubenchs/benchmarks/deprecated/Pi.java @@ -15,6 +15,8 @@ * */ +package benchmarks.deprecated; + import java.lang.System; // This benchmark generates PI using Leibniz formula. diff --git a/benchmarking/java-ubenchs/benchmarks/deprecated/PrimeNumber.java b/benchmarking/java-ubenchs/benchmarks/deprecated/PrimeNumber.java index 4b9391f..55fd8b9 100644 --- a/benchmarking/java-ubenchs/benchmarks/deprecated/PrimeNumber.java +++ b/benchmarking/java-ubenchs/benchmarks/deprecated/PrimeNumber.java @@ -15,6 +15,8 @@ * */ +package benchmarks.deprecated; + import java.lang.System; // This benchmark generates primes up to a number. diff --git a/benchmarking/java-ubenchs/benchmarks/deprecated/Recursion.java b/benchmarking/java-ubenchs/benchmarks/deprecated/Recursion.java index 5ae2034..406b78b 100644 --- a/benchmarking/java-ubenchs/benchmarks/deprecated/Recursion.java +++ b/benchmarking/java-ubenchs/benchmarks/deprecated/Recursion.java @@ -15,6 +15,8 @@ * */ +package benchmarks.deprecated; + import java.lang.System; // This benchmark measures time taken for recursive method calls. diff --git a/benchmarking/java-ubenchs/benchmarks/deprecated/Rotation.java b/benchmarking/java-ubenchs/benchmarks/deprecated/Rotation.java index febe0de..dc5fd15 100644 --- a/benchmarking/java-ubenchs/benchmarks/deprecated/Rotation.java +++ b/benchmarking/java-ubenchs/benchmarks/deprecated/Rotation.java @@ -15,6 +15,8 @@ * */ +package benchmarks.deprecated; + import java.lang.System; // This benchmark rotates three dimensional points. diff --git a/benchmarking/java-ubenchs/benchmarks/deprecated/StringOps.java b/benchmarking/java-ubenchs/benchmarks/deprecated/StringOps.java index 7e07180..476f414 100644 --- a/benchmarking/java-ubenchs/benchmarks/deprecated/StringOps.java +++ b/benchmarking/java-ubenchs/benchmarks/deprecated/StringOps.java @@ -15,6 +15,8 @@ * */ +package benchmarks.deprecated; + import java.lang.System; // This benchmark performs various string operations. diff --git a/benchmarking/java-ubenchs/benchmarks/deprecated/Switch.java b/benchmarking/java-ubenchs/benchmarks/deprecated/Switch.java index 5d6603d..c393484 100644 --- a/benchmarking/java-ubenchs/benchmarks/deprecated/Switch.java +++ b/benchmarking/java-ubenchs/benchmarks/deprecated/Switch.java @@ -15,6 +15,8 @@ * */ +package benchmarks.deprecated; + import java.lang.System; public class Switch { diff --git a/benchmarking/java-ubenchs/benchmarks/deprecated/SyncFib.java b/benchmarking/java-ubenchs/benchmarks/deprecated/SyncFib.java index 6f302c4..f7d0909 100644 --- a/benchmarking/java-ubenchs/benchmarks/deprecated/SyncFib.java +++ b/benchmarking/java-ubenchs/benchmarks/deprecated/SyncFib.java @@ -15,6 +15,8 @@ * */ +package benchmarks.deprecated; + import java.lang.System; import org.linaro.bench.IterationsAnnotation; diff --git a/benchmarking/java-ubenchs/benchmarks/deprecated/SyncNorec.java b/benchmarking/java-ubenchs/benchmarks/deprecated/SyncNorec.java index 0c1f2c1..9b60273 100644 --- a/benchmarking/java-ubenchs/benchmarks/deprecated/SyncNorec.java +++ b/benchmarking/java-ubenchs/benchmarks/deprecated/SyncNorec.java @@ -15,6 +15,8 @@ * */ +package benchmarks.deprecated; + import java.lang.System; public class SyncNorec { diff --git a/benchmarking/java-ubenchs/benchmarks/deprecated/Synchro.java b/benchmarking/java-ubenchs/benchmarks/deprecated/Synchro.java index 4f76ddd..a97fdd8 100644 --- a/benchmarking/java-ubenchs/benchmarks/deprecated/Synchro.java +++ b/benchmarking/java-ubenchs/benchmarks/deprecated/Synchro.java @@ -15,6 +15,8 @@ * */ +package benchmarks.deprecated; + import java.lang.System; public class Synchro { diff --git a/benchmarking/java-ubenchs/benchmarks/deprecated/VolatileTest.java b/benchmarking/java-ubenchs/benchmarks/deprecated/VolatileTest.java index 238c360..7cb7613 100644 --- a/benchmarking/java-ubenchs/benchmarks/deprecated/VolatileTest.java +++ b/benchmarking/java-ubenchs/benchmarks/deprecated/VolatileTest.java @@ -15,6 +15,8 @@ * */ +package benchmarks.deprecated; + import java.lang.System; public class VolatileTest { diff --git a/benchmarking/java-ubenchs/benchmarks/micro/Intrinsics.java b/benchmarking/java-ubenchs/benchmarks/micro/Intrinsics.java index 6fc40a3..630aefe 100644 --- a/benchmarking/java-ubenchs/benchmarks/micro/Intrinsics.java +++ b/benchmarking/java-ubenchs/benchmarks/micro/Intrinsics.java @@ -15,6 +15,8 @@ * */ +package benchmarks.micro; + import java.lang.System; import java.util.Random; import java.util.EnumMap; diff --git a/benchmarking/java-ubenchs/build.sh b/benchmarking/java-ubenchs/build.sh index 531ef1a..9e10274 100755 --- a/benchmarking/java-ubenchs/build.sh +++ b/benchmarking/java-ubenchs/build.sh @@ -116,7 +116,6 @@ set +f JAVA_BENCHMARK_CLASSES=${JAVA_BENCHMARK_FILES//.java/} # Remove the leading `./` and `benchmarks`. JAVA_BENCHMARK_CLASSES=${JAVA_BENCHMARK_CLASSES//.\//} -JAVA_BENCHMARK_CLASSES=${JAVA_BENCHMARK_CLASSES//benchmarks\//} # Trim trailing whitespaces. JAVA_BENCHMARK_CLASSES=${JAVA_BENCHMARK_CLASSES/%[[:space:]]/} read -a array <<< $JAVA_BENCHMARK_CLASSES diff --git a/benchmarking/java-ubenchs/framework/org/linaro/bench/RunBench.java b/benchmarking/java-ubenchs/framework/org/linaro/bench/RunBench.java index 653fe92..fe650cd 100644 --- a/benchmarking/java-ubenchs/framework/org/linaro/bench/RunBench.java +++ b/benchmarking/java-ubenchs/framework/org/linaro/bench/RunBench.java @@ -72,6 +72,20 @@ public class RunBench { return end - start; } + static String benchmarkIdentifier(Method method) { + Pattern format = Pattern.compile("((?:\\w+\\.)*)(\\w+)"); + Matcher matcher = format.matcher(method.getDeclaringClass().getName()); + if (! matcher.matches()) { + return null; + } + String path = matcher.group(1); + path = path.replace('.', '/'); + String className = matcher.group(2); + // Filter the "time" prefix. + String benchName = method.getName().substring(4); + return path + className + "." + benchName; + } + /* * Run one benchmark. May have auto-calibration depends on method's IterationsAnnotation. */ @@ -103,10 +117,10 @@ public class RunBench { iteration_time = duration / (float) iterations; - log.info(method.getDeclaringClass().getName() + "." + method.getName().substring(4) + ": " - + duration + " ns for " + iterations + " iterations"); - System.out.printf("%-40s%.2f ns per iteration\n", method.getDeclaringClass().getName() - + "." + method.getName().substring(4) + ":", iteration_time); + log.info(benchmarkIdentifier(method) + ": " + + duration + " ns for " + iterations + " iterations"); + System.out.printf("%-40s%.2f ns per iteration\n", + benchmarkIdentifier(method) + ":", iteration_time); } public int runBenchSet(String target, boolean verify) { @@ -116,19 +130,23 @@ public class RunBench { // The target format is: // path/to/BenchmarkClass(.Benchmark)? - Pattern format = Pattern.compile("(?:\\w+\\/)*(\\w+)(?:.(\\w+))?$"); + Pattern format = Pattern.compile("((?:\\w+\\/)*)(\\w+)(?:\\.(\\w+))?$"); Matcher matcher = format.matcher(target); if (! matcher.matches()) { return 1; } - String benchmarkClass = matcher.group(1); - String benchmark = matcher.group(2); - + String benchmarkClassPath = matcher.group(1); + if (!benchmarkClassPath.startsWith("benchmarks/")) { + benchmarkClassPath = "benchmarks/" + benchmarkClassPath; + } + benchmarkClassPath = benchmarkClassPath.replace('/', '.'); + String benchmarkClass = matcher.group(2); + String benchmark = matcher.group(3); List<Method> benchMethods = new ArrayList<Method>(5); Method verifyMethod = null; try { - Class<?> clazz = Class.forName(benchmarkClass); + Class<?> clazz = Class.forName(benchmarkClassPath + benchmarkClass); Object instance = clazz.newInstance(); if (benchmark != null) { Method m = clazz.getMethod(TESTNAME_PREFIX + benchmark, int.class); diff --git a/benchmarking/java-ubenchs/run.py b/benchmarking/java-ubenchs/run.py index 18371d7..7537387 100755 --- a/benchmarking/java-ubenchs/run.py +++ b/benchmarking/java-ubenchs/run.py @@ -19,23 +19,18 @@ import argparse import fnmatch -import glob import os import pickle import shutil import subprocess import sys import time -import re -dir_pwd = os.path.dirname(os.path.realpath(__file__)) -dir_benchmarks = os.path.join(dir_pwd, 'benchmarks') -dir_framework = os.path.join(dir_pwd, 'framework') -dir_tools = os.path.join(dir_pwd, 'tools') -dir_build = os.path.join(dir_pwd, 'build') -dir_build_java_classes = os.path.join(dir_build, 'classes') +dir_root = os.path.dirname(os.path.realpath(__file__)) +dir_tools = os.path.join(dir_root, 'tools') sys.path.insert(0, dir_tools) +import utils import utils_stats bench_runner_main = 'org.linaro.bench.RunBench' @@ -86,7 +81,7 @@ def BuildOptions(): help='Quoted (benchmark name) filter pattern.') parser.add_argument('-F', '--filter-out', action = 'append', help='''Filter out the benchmarks matching this patern. - Defaults to \'deprecated/*\' if no other filter is + Defaults to \'benchmarks/deprecated/*\' if no other filter is specified.''') parser.add_argument('--output-pkl', action = 'store', help='Specify a name for the output `.pkl` file.') @@ -103,9 +98,6 @@ def ensure_dir(path): if not os.path.exists(path): os.makedirs(path) -def get_files(ext, path): - return glob.glob(os.path.join(path, '*.' + ext)) - # ADB helpers def adb_push(f, target_path = default_remote_copy_path): @@ -128,7 +120,7 @@ def adb_shell(command): def host_java(command): VerbosePrint(' '.join(command)) - p = subprocess.Popen(command, cwd = dir_build_java_classes, + p = subprocess.Popen(command, cwd = utils.dir_build_java_classes, stdout = subprocess.PIPE, stderr = subprocess.PIPE) return p.communicate() @@ -216,19 +208,9 @@ def RunBenchs(apk, bench_names, def ListAllBenchmarks(): - list_benchs = [] - # List java files in 'benchmarks/'. - list_benchs += get_files('java', dir_benchmarks) - # List java files in subdirectories of 'benchmarks/'. - bench_subdirs = [x for x in os.listdir(dir_benchmarks) if os.path.isdir(os.path.join(dir_benchmarks, x))] - for subdir in bench_subdirs: - for root, dirs, files in os.walk(os.path.join(dir_benchmarks, subdir)): - list_benchs += map(lambda x : os.path.join(root, x), files) - list_benchs = [f for f in list_benchs if re.match(r'^[\w\/-]+\.java$', f)] - list_benchs = list(map(lambda x : os.path.relpath(x, dir_benchmarks), list_benchs)) - list_benchs = list(map(lambda x : x.replace('.java', ''), list_benchs)) - list_benchs.sort() - return list_benchs + benchs = utils.ListBenchmarkJavaFiles() + benchs = list(map(lambda x : x.replace('.java', ''), benchs)) + return benchs def FilterBenchmarks(benchmarks, filter, filter_out): @@ -267,11 +249,10 @@ if __name__ == "__main__": if args.filter is not None or args.filter_out is not None: filter_out = args.filter_out else: - filter_out = ['deprecated/*'] + filter_out = ['benchmarks/deprecated/*'] benchmarks = FilterBenchmarks(benchmarks, args.filter, filter_out) - bench_class_names = list(map(os.path.basename, benchmarks)) - RunBenchs(remote_apk, bench_class_names, args.run_on_target, args.auto_calibrate, args.iterations, args.mode) + RunBenchs(remote_apk, benchmarks, args.run_on_target, args.auto_calibrate, args.iterations, args.mode) utils_stats.PrintStats(result, iterations = args.iterations) print('') # Write the results to a file so they can later be used with `compare.py`. diff --git a/benchmarking/java-ubenchs/test/test.py b/benchmarking/java-ubenchs/test/test.py index 924bc69..47e7fd5 100755 --- a/benchmarking/java-ubenchs/test/test.py +++ b/benchmarking/java-ubenchs/test/test.py @@ -57,11 +57,18 @@ def TestBenchmarksOnHost(): return rc +def TestBenchmarkPackages(): + benchmark_files = [] + # TODO: Automatically test that each benchmark has the correct package. + return 0 + + if __name__ == "__main__": args = BuildOptions() rc = 0 rc |= TestBenchmarksOnHost() + rc |= TestBenchmarkPackages() if rc != 0: print("Tests FAILED.") diff --git a/benchmarking/java-ubenchs/tools/utils.py b/benchmarking/java-ubenchs/tools/utils.py new file mode 100644 index 0000000..04d3753 --- /dev/null +++ b/benchmarking/java-ubenchs/tools/utils.py @@ -0,0 +1,48 @@ +# Copyright 2015 ARM Limited +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +import glob +import os +import re + + +dir_tools = os.path.dirname(os.path.realpath(__file__)) +dir_root = os.path.realpath(os.path.join(dir_tools, '..')) +dir_benchmarks = os.path.join(dir_root, 'benchmarks') +dir_build = os.path.join(dir_root, 'build') +dir_build_java_classes = os.path.join(dir_build, 'classes') +dir_framework = os.path.join(dir_root, 'framework') + + +def GetFiles(ext, path): + return glob.glob(os.path.join(path, '*.' + ext)) + + +def ListBenchmarkJavaFiles(): + list_files = [] + # List java files in 'benchmarks/'. + list_files += GetFiles('java', dir_benchmarks) + # List java files in subdirectories of 'benchmarks/'. + bench_subdirs = [x for x in os.listdir(dir_benchmarks) if os.path.isdir(os.path.join(dir_benchmarks, x))] + for subdir in bench_subdirs: + for root, dirs, files in os.walk(os.path.join(dir_benchmarks, subdir)): + list_files += map(lambda x : os.path.join(root, x), files) + list_files = [f for f in list_files if re.match(r'^[\w\/-]+\.java$', f)] + list_files = list(map(lambda x : os.path.relpath(x, dir_root), list_files)) + list_files.sort() + return list_files + + + |