diff --git a/benchmarks/bench-qsort-common.h b/benchmarks/bench-qsort-common.h index 0f873641..60792618 100644 --- a/benchmarks/bench-qsort-common.h +++ b/benchmarks/bench-qsort-common.h @@ -19,6 +19,10 @@ }))) #define BENCH(func, type) \ + MY_BENCHMARK_CAPTURE(func, type, smallrandom_128, 128, std::string("random")); \ + MY_BENCHMARK_CAPTURE(func, type, smallrandom_256, 256, std::string("random")); \ + MY_BENCHMARK_CAPTURE(func, type, smallrandom_512, 512, std::string("random")); \ + MY_BENCHMARK_CAPTURE(func, type, smallrandom_1k, 1024, std::string("random")); \ MY_BENCHMARK_CAPTURE(func, type, random_5k, 5000, std::string("random")); \ MY_BENCHMARK_CAPTURE( \ func, type, random_100k, 100000, std::string("random")); \ diff --git a/run-bench.py b/run-bench.py index d7b697b8..c93cfae9 100644 --- a/run-bench.py +++ b/run-bench.py @@ -4,20 +4,36 @@ parser = argparse.ArgumentParser() parser.add_argument('--branchcompare', action='store_true', help='Compare benchmarks of current branch with main. Provide an optional --filter') -parser.add_argument('--benchcompare', action='store_true', help='Compare across benchmarks. Requires --baseline and --contender') +parser.add_argument('--benchcompare', type=str, help='Compare simd bench with stdsort methods. Requires one of qsort, qselect, partialsort, argsort or argselect') parser.add_argument("-f", '--filter', type=str, required=False) -parser.add_argument("-b", '--baseline', type=str, required=False) -parser.add_argument("-c", '--contender', type=str, required=False) args = parser.parse_args() if len(sys.argv) == 1: parser.error("requires one of --benchcompare or --branchcompare") +filterb = "" +if args.filter is not None: + filterb = args.filter + if args.benchcompare: - if (args.baseline is None or args.contender is None): - parser.error("--benchcompare requires --baseline and --contender") + baseline = "" + contender = "" + if "qsort" in args.benchcompare: + baseline = "stdsort.*" + filterb + contender = "avx512qsort.*" + filterb + elif "qselect" in args.benchcompare: + baseline = "stdnthelement.*" + filterb + contender = "avx512_qselect.*" + filterb + elif "partial" in args.benchcompare: + baseline = "stdpartialsort.*" + filterb + contender = "avx512_partial_qsort.*" + filterb + elif "argsort" in args.benchcompare: + baseline = "stdargsort.*" + filterb + contender = "avx512argsort.*" + filterb else: - rc = subprocess.check_call("./scripts/bench-compare.sh '%s %s'" % (args.baseline, args.contender), shell=True) + parser.print_help(sys.stderr) + parser.error("ERROR: Unknown argument '%s'" % args.benchcompare) + rc = subprocess.check_call("./scripts/bench-compare.sh '%s' '%s'" % (baseline, contender), shell=True) if args.branchcompare: if args.filter is None: