Skip to content

Commit 2fcb897

Browse files
author
Florian Wagner
committed
improved visualization
1 parent ec96bd0 commit 2fcb897

File tree

1 file changed

+43
-23
lines changed

1 file changed

+43
-23
lines changed

benchmarking/visualize.py

+43-23
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@
1212
import matplotlib.pyplot as plt
1313
from matplotlib.backends.backend_agg import FigureCanvasAgg as FigureCanvas
1414
import itertools
15+
import seaborn as sns
16+
import pandas as pd
1517

1618
#%%
1719

@@ -45,7 +47,7 @@ def process_lines(raw):
4547

4648
split_name = name.split('_')
4749
if(len(split_name) == 3):
48-
size = name.split('/')[1]
50+
size = name.split('/')[1] + ('²')
4951
label = name.split('/')[0].split('_')[1]
5052
processed_elements.append((label,size,cpu_time))
5153

@@ -61,57 +63,75 @@ def load_processed(filepath):
6163
values = []
6264
for k, g in itertools.groupby(processed, lambda el: (el[0],el[1])):
6365
if k[0] == 'stratified':
64-
values.append([float(el[2]) for el in g])
65-
labels.append(k[1])
66+
for el in g:
67+
values.append(float(el[2]))
68+
labels.append(k[1])
6669

6770
return values, labels
6871

6972
#%%
7073

71-
def draw_boxplots(fig, values, labels, even=True):
72-
positions = range(1, (2*len(labels)+1), 2)
73-
if(even):
74-
positions = [pos+.6 for pos in positions]
74+
def draw_boxplots(fig, df):
7575

7676
ax = fig.axes[0]
7777

78-
ax.boxplot(values,
79-
labels=labels,
80-
positions=positions)
81-
82-
ax.set_xticklabels( labels, rotation=45 )
83-
ax.set_xlim(left=-1, right = 2*len(labels)+2+1, auto=False)
84-
ax.set_ylim(0, 3000000)
78+
ax = sns.boxplot(x="size", y="values", hue="omp", data=df, ax=ax, linewidth=1.0, fliersize=2.0)
79+
80+
ax.get_yaxis().set_label_text("Time (ns)")
81+
82+
# ax.set_ylim(0, 3000000)
83+
ax.set_yscale('log')
8584

8685

87-
def create_fig(N):
86+
def create_fig():
8887
fig = matplotlib.figure.Figure()
8988
FigureCanvas(fig)
9089

9190
ax = fig.add_subplot(111)
92-
ax.set_title('Benchmarking times (n_rooks)')
9391
#ax.set_yscale('log')
92+
ax.set_title('Benchmarking times (stratified sampling)')
93+
sns.despine(ax=ax)
9494

95-
96-
ax.set_xlim(left=-1, right = 2*N+2+1, auto=False)
95+
9796

9897
return fig
9998

10099
def save_fig(fig, filename):
101100
fig.savefig(filename)
101+
102+
#%%
102103

104+
def flatten(list_of_lists):
105+
return [item for sublist in list_of_lists for item in sublist]
103106
#%%
104107

105108
if __name__ == '__main__':
106109
pass
107110

108-
no_omp_proc = load_processed("/home/florian/Uni/ACPP_Dev/glkernel/benchmarking/no_omp_result.csv")
109-
omp_proc = load_processed("/home/florian/Uni/ACPP_Dev/glkernel/benchmarking/omp_result.csv")
111+
no_omp_proc = load_processed("./no_omp_result.csv")
112+
omp_proc = load_processed("./omp_result.csv")
113+
114+
sns.set(context="talk", style="white")
115+
116+
fig = create_fig()
117+
118+
data = {"size": no_omp_proc[1] + omp_proc[1],
119+
"values": no_omp_proc[0] + omp_proc[0],
120+
"omp": ["No"]*len(no_omp_proc[0]) + ["Yes"] * len(omp_proc[0])}
121+
122+
data2 = {"size": flatten(zip(no_omp_proc[1], omp_proc[1])),
123+
"values": flatten(zip(no_omp_proc[0], omp_proc[0])),
124+
"omp": ["No"]*len(no_omp_proc[0])*2}
125+
126+
df = pd.DataFrame(data=data)
127+
128+
#%%
129+
130+
values = flatten(zip(no_omp_proc[0], omp_proc[0]))
131+
labels = flatten(zip(no_omp_proc[1], omp_proc[1]))
110132

111-
fig = create_fig(len(no_omp_proc[0]))
112133

113-
draw_boxplots(fig, no_omp_proc[0], [el + "no_omp" for el in no_omp_proc[1]], even=False)
114-
draw_boxplots(fig, omp_proc[0], omp_proc[1], even=True)
134+
draw_boxplots(fig, df)
115135

116136
save_fig(fig, "bench.png")
117137

0 commit comments

Comments
 (0)