diff options
| author | Charles <sircharlesaze@gmail.com> | 2020-01-21 17:26:54 +0100 |
|---|---|---|
| committer | Charles <sircharlesaze@gmail.com> | 2020-01-21 17:30:16 +0100 |
| commit | aaba527e44d763c83d0109e833150d4c0e6d4e56 (patch) | |
| tree | ab7e3f7fea84176bc02e34f037bfa67bc40d2472 /benchmark.py | |
| parent | e80d3b18ebffc4eb882e9ffc474c7251aae52b51 (diff) | |
| download | push_swap-aaba527e44d763c83d0109e833150d4c0e6d4e56.tar.gz push_swap-aaba527e44d763c83d0109e833150d4c0e6d4e56.tar.bz2 push_swap-aaba527e44d763c83d0109e833150d4c0e6d4e56.zip | |
Added benchmark and updated README
Diffstat (limited to 'benchmark.py')
| -rw-r--r-- | benchmark.py | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/benchmark.py b/benchmark.py new file mode 100644 index 0000000..1460a5e --- /dev/null +++ b/benchmark.py @@ -0,0 +1,48 @@ +import sys +import time +import json +import random +import collections +import subprocess + + +def random_stack(start, end): + st = list(range(start, end)) + random.shuffle(st) + return st + + +def run_bench_size(size, samples): + runs = [] + for _ in range(samples): + st = random_stack(1, size + 1) + out = subprocess.check_output([f"./push_swap", *[str(x) for x in st]]) + ops = out.decode().strip().split("\n") + runs.append({ + "ops_num": len(ops), + "ops_counter": dict(collections.Counter(ops)), + }) + return runs + +def run_bench(start, end, step, samples=1): + bench = { + "start": start, + "end": end, + "step": step, + "data": [] + } + for i in range(start, end, step): + bench["data"].append(run_bench_size(i, samples)) + return bench + +if __name__ == "__main__": + if len(sys.argv) != 4 and len(sys.argv) != 5: + print(f"Usage: {sys.argv[0]} start stop step [samples]") + sys.exit(1) + samples = int(sys.argv[4]) if len(sys.argv) == 5 else 1 + with open("benchmark.json", "w") as file: + bench = run_bench(int(sys.argv[1]), + int(sys.argv[2]), + int(sys.argv[3]), + samples) + file.write(json.dumps(bench)) |
