Benchmark adjustments and plotting
This commit is contained in:
@@ -1,5 +1,10 @@
|
||||
#!/usr/bin/env python3
|
||||
|
||||
import sys
|
||||
import matplotlib.pyplot as plt
|
||||
import numpy as np
|
||||
import math
|
||||
|
||||
with open(sys.argv[1], "r") as f:
|
||||
csv = [ [ v.strip() for v in l.split(',') ] for l in f.readlines() ]
|
||||
csv[0] = csv[0] + [ 'relative' ]
|
||||
@@ -12,3 +17,56 @@ csv[1:] = sorted(subset, key=lambda x: x[8])
|
||||
out = "\n".join(",".join(str(x) for x in r) for r in csv)
|
||||
with open(sys.argv[1] + "with_relative.csv", "w") as f:
|
||||
f.write(out)
|
||||
|
||||
print(csv)
|
||||
csv = [ x for x in csv if 'rbtree' not in x[0] or 'kraken' not in x[0] or 'opt' in x[0] ]
|
||||
print(csv)
|
||||
|
||||
def make_name(n):
|
||||
replace_dict = {"kk": "Koka", "cpp": "C++", "ml": "ML", "hs": "Haskell", "sw": "Swift", "wavm": "WAVM"}
|
||||
out = " ".join(replace_dict.get(word, word.title()) for word in n.split('/')[-1]\
|
||||
.split(' ')[0]\
|
||||
.replace("-", " ").split(" ")\
|
||||
if word not in {"rbtree"})
|
||||
if out == "" and "java" in n:
|
||||
out = "Java"
|
||||
print(f"changed {n} to {out}")
|
||||
return out
|
||||
names = [ make_name(x[0]) for x in csv[1:] ]
|
||||
benchmark_size = csv[1][0].split('/')[-1].split(' ')[1]
|
||||
times = [ float(x[1]) for x in csv[1:] ]
|
||||
relative = [ float(x[8]) for x in csv[1:] ]
|
||||
print(names)
|
||||
print(times)
|
||||
print(relative)
|
||||
out_name = " ".join(sys.argv[1].removesuffix('.csv')\
|
||||
.replace("_", " ").title()\
|
||||
.replace("Rbtree", "RB-Tree")\
|
||||
.split(" ")[:-1] + [benchmark_size])
|
||||
|
||||
n_groups = len(names)
|
||||
a = times
|
||||
d = names
|
||||
|
||||
for do_log in [False, True]:
|
||||
fig, ax = plt.subplots()
|
||||
index = np.arange(n_groups)
|
||||
bar_width = 0.4
|
||||
opacity = 0.9
|
||||
|
||||
ax.set_facecolor('gainsboro')
|
||||
rects1 = plt.bar(index, a, bar_width, alpha=opacity, color='orange')
|
||||
plt.xlabel(f"{out_name} Benchmark" + (" (Log Scale)" if do_log else ""))
|
||||
plt.ylabel('Runtime (s)' + (" (Log Scale)" if do_log else ""))
|
||||
ax.ticklabel_format(useOffset=False, style='plain')
|
||||
plt.xticks(index, d, rotation=0)
|
||||
plt.legend()
|
||||
|
||||
plt.tight_layout()
|
||||
plt.xticks(rotation = 45)
|
||||
if do_log:
|
||||
plt.subplots_adjust(left=0.10)
|
||||
plt.semilogy()
|
||||
plt.subplots_adjust(bottom=0.32)
|
||||
plt.savefig(f"{sys.argv[1]}_{'log' if do_log else ''}.png", dpi = 96 * 2 * 2)
|
||||
#plt.show()
|
||||
|
||||
Reference in New Issue
Block a user