|
9 | 9 | 'Equality', |
10 | 10 | ]; |
11 | 11 |
|
12 | | - // The languages we have harnesses for. The results for each language will |
13 | | - // appear as a series in the plot. |
14 | | - var languages = ['Swift', 'C++']; |
15 | | - |
16 | 12 | // The harnessSize keys we want to print in the summary table, in the order |
17 | 13 | // they should be displayed. |
18 | 14 | var harnessSizeKeys = ['Unstripped', 'Stripped']; |
|
50 | 46 | }; |
51 | 47 |
|
52 | 48 | // Creates and return a series for the given language's results in a session. |
53 | | - function createSeries(session, language) { |
| 49 | + function createSeries(session, series) { |
54 | 50 | var x = []; |
55 | 51 | var y = []; |
56 | 52 |
|
|
59 | 55 | // vertical, which is what we want. |
60 | 56 | for (var i = 0; i < benchmarks.length; i++) { |
61 | 57 | var benchmark = benchmarks[i]; |
62 | | - var timings = session[language][benchmark]; |
| 58 | + var timings = series.data[benchmark]; |
63 | 59 | if (timings) { |
64 | 60 | for (var j = 0; j < timings.length; j++) { |
65 | 61 | x.push(benchmark.replace(" ", "<br>")); |
|
69 | 65 | } |
70 | 66 |
|
71 | 67 | return { |
72 | | - name: language, |
| 68 | + name: series.name, |
73 | 69 | x: x, |
74 | 70 | y: y, |
75 | 71 | type: 'box', |
|
126 | 122 | // Insert the runtime stats. |
127 | 123 | var header = $('<tr></tr>').appendTo(table); |
128 | 124 | header.append($('<th>Median runtimes</th>')); |
129 | | - for (var j = 0; j < languages.length; j++) { |
130 | | - header.append($('<th></th>').text(languages[j])); |
131 | | - header.append($('<th></th>')); |
132 | | - header.append($('<th></th>')); |
| 125 | + for (var j = 0; j < session.series.length; j++) { |
| 126 | + header.append($('<th colspan="2"></th>').text(session.series[j].name)); |
133 | 127 | } |
134 | 128 |
|
135 | 129 | for (var i = 0; i < benchmarks.length; i++) { |
|
142 | 136 | // Track which language was the fastest |
143 | 137 | var timings = []; |
144 | 138 | var bestLanguage = 0; |
145 | | - for (var j = 0; j < languages.length; j++) { |
146 | | - var language = languages[j]; |
147 | | - var languageTimings = session[language][benchmark]; |
| 139 | + for (var j = 0; j < session.series.length; j++) { |
| 140 | + var languageTimings = session.series[j].data[benchmark]; |
148 | 141 | if (languageTimings) { |
149 | 142 | var med = median(languageTimings); |
150 | 143 | timings.push(med); |
|
156 | 149 |
|
157 | 150 | // Insert the per-language timings into the table |
158 | 151 | var bestValue = timings[bestLanguage]; |
159 | | - for (var j = 0; j < languages.length; j++) { |
160 | | - var language = languages[j]; |
| 152 | + for (var j = 0; j < session.series.length; j++) { |
161 | 153 | var med = timings[j]; |
162 | 154 | var valueCell = $('<td></td>').appendTo(tr); |
163 | 155 | var multiplierCell = $('<td></td>').appendTo(tr); |
|
171 | 163 | } |
172 | 164 | decorateMultiplierCell(multiplierCell, multiplier); |
173 | 165 | } |
174 | | - tr.append($('<td></td>')); |
175 | 166 | } |
176 | 167 | } |
177 | 168 |
|
178 | 169 | // Insert the binary size stats. |
179 | 170 | header = $('<tr></tr>').appendTo(table); |
180 | 171 | header.append($('<th>Harness size</th>')); |
181 | | - for (var j = 0; j < languages.length; j++) { |
182 | | - header.append($('<th></th>')); |
| 172 | + for (var j = 0; j < session.series.length; j++) { |
183 | 173 | header.append($('<th></th>')); |
184 | 174 | header.append($('<th></th>')); |
185 | 175 | } |
|
192 | 182 |
|
193 | 183 | var bestLanguage = 0; |
194 | 184 | var sizes = []; |
195 | | - for (var j = 0; j < languages.length; j++) { |
196 | | - var language = languages[j]; |
197 | | - var size = session[language].harnessSize[harnessSizeKey]; |
| 185 | + for (var j = 0; j < session.series.length; j++) { |
| 186 | + var size = session.series[j].data.harnessSize[harnessSizeKey]; |
198 | 187 | sizes.push(size); |
199 | 188 | if (size < sizes[bestLanguage]) { |
200 | 189 | bestLanguage = j; |
201 | 190 | } |
202 | 191 | } |
203 | 192 |
|
204 | | - for (var j = 0; j < languages.length; j++) { |
| 193 | + for (var j = 0; j < session.series.length; j++) { |
205 | 194 | var size = sizes[j]; |
206 | 195 | var multiplier = size / sizes[bestLanguage]; |
207 | 196 | var formattedSize = size.toLocaleString() + ' b'; |
|
213 | 202 | multiplierCell.text('(' + multiplier.toFixed(1) + 'x)'); |
214 | 203 | } |
215 | 204 | decorateMultiplierCell(multiplierCell, multiplier); |
216 | | - tr.append($('<td></td>')); |
217 | 205 | } |
218 | 206 | } |
219 | 207 |
|
220 | 208 | var tfoot = $('<tfoot></tfoot>').appendTo(table); |
221 | 209 | var footerRow = $('<tr></tr>').appendTo(tfoot); |
222 | | - var colspan = 3 * languages.length + 1; |
| 210 | + var colspan = 3 * session.series.length + 1; |
223 | 211 | var footerCell = |
224 | 212 | $('<td colspan="' + colspan + '"></td>').appendTo(footerRow); |
225 | 213 | footerCell.text('Green highlights the best result for each test. ' + |
|
247 | 235 | var title = session.type; |
248 | 236 | var header = $('<h3></h3>').addClass('row').text(title); |
249 | 237 |
|
250 | | - var subtitle = 'Branch <tt>' + session.branch + |
251 | | - '</tt>, commit <tt>' + session.commit + '</tt>'; |
| 238 | + var subtitle = 'Working tree was at <tt>' + session.branch + |
| 239 | + '</tt>, commit <tt>' + session.commit.substr(0, 6) + '</tt>'; |
252 | 240 | if (session.uncommitted_changes) { |
253 | 241 | subtitle += ' (with uncommited changes)'; |
254 | 242 | } |
255 | | - subtitle += ', run on ' + formattedDate; |
| 243 | + subtitle += ' – ' + formattedDate; |
256 | 244 |
|
257 | 245 | header.append($('<small></small>').html(subtitle)); |
258 | 246 | $('#container').append('<hr>'); |
259 | 247 | $('#container').append(header); |
260 | 248 |
|
261 | 249 | var id = 'chart' + i; |
262 | 250 | var row = $('<div></div>').addClass('row'); |
263 | | - var chartColumn = $('<div></div>').addClass('col-md-9'); |
264 | | - var tableColumn = $('<div></div>').addClass('col-md-3'); |
| 251 | + var chartColumn = $('<div></div>').addClass('col-md-8'); |
| 252 | + var tableColumn = $('<div></div>').addClass('col-md-4'); |
265 | 253 |
|
266 | 254 | row.append(chartColumn); |
267 | 255 | row.append(tableColumn); |
|
270 | 258 | var chart = $('<div></div>').attr('id', id).addClass('chart'); |
271 | 259 | chartColumn.append(chart); |
272 | 260 |
|
273 | | - for (var j = 0; j < languages.length; j++) { |
274 | | - var language = languages[j]; |
275 | | - if (session[language]) { |
276 | | - var series = createSeries(session, language); |
277 | | - allSeries.push(series); |
278 | | - } |
| 261 | + for (var j = 0; j < session.series.length; j++) { |
| 262 | + var series = createSeries(session, session.series[j]); |
| 263 | + allSeries.push(series); |
279 | 264 | } |
280 | 265 |
|
281 | 266 | Plotly.newPlot(id, allSeries, layout, { |
|
0 commit comments