12
12
import matplotlib .pyplot as plt
13
13
from matplotlib .backends .backend_agg import FigureCanvasAgg as FigureCanvas
14
14
import itertools
15
+ import seaborn as sns
16
+ import pandas as pd
15
17
16
18
#%%
17
19
@@ -45,7 +47,7 @@ def process_lines(raw):
45
47
46
48
split_name = name .split ('_' )
47
49
if (len (split_name ) == 3 ):
48
- size = name .split ('/' )[1 ]
50
+ size = name .split ('/' )[1 ] + ( '²' )
49
51
label = name .split ('/' )[0 ].split ('_' )[1 ]
50
52
processed_elements .append ((label ,size ,cpu_time ))
51
53
@@ -61,57 +63,75 @@ def load_processed(filepath):
61
63
values = []
62
64
for k , g in itertools .groupby (processed , lambda el : (el [0 ],el [1 ])):
63
65
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 ])
66
69
67
70
return values , labels
68
71
69
72
#%%
70
73
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 ):
75
75
76
76
ax = fig .axes [0 ]
77
77
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' )
85
84
86
85
87
- def create_fig (N ):
86
+ def create_fig ():
88
87
fig = matplotlib .figure .Figure ()
89
88
FigureCanvas (fig )
90
89
91
90
ax = fig .add_subplot (111 )
92
- ax .set_title ('Benchmarking times (n_rooks)' )
93
91
#ax.set_yscale('log')
92
+ ax .set_title ('Benchmarking times (stratified sampling)' )
93
+ sns .despine (ax = ax )
94
94
95
-
96
- ax .set_xlim (left = - 1 , right = 2 * N + 2 + 1 , auto = False )
95
+
97
96
98
97
return fig
99
98
100
99
def save_fig (fig , filename ):
101
100
fig .savefig (filename )
101
+
102
+ #%%
102
103
104
+ def flatten (list_of_lists ):
105
+ return [item for sublist in list_of_lists for item in sublist ]
103
106
#%%
104
107
105
108
if __name__ == '__main__' :
106
109
pass
107
110
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 ]))
110
132
111
- fig = create_fig (len (no_omp_proc [0 ]))
112
133
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 )
115
135
116
136
save_fig (fig , "bench.png" )
117
137
0 commit comments