Skip to content

Commit 57450b0

Browse files
committed
Update auto-generated files
1 parent d50df48 commit 57450b0

3 files changed

Lines changed: 142 additions & 26 deletions

File tree

include/nonius/detail/html_report_template.g.h++

Lines changed: 69 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,7 @@
7979
" display: block;\n"
8080
" padding: 0 3em 0 1.5em;\n"
8181
" margin: 0.3em;\n"
82+
" height: 2em;\n"
8283
"\n"
8384
" transition: border-color 0.2s;\n"
8485
" border: 2px solid #aaa;\n"
@@ -97,6 +98,18 @@
9798
" color: white;\n"
9899
"}\n"
99100
"\n"
101+
"div.is-sorted {\n"
102+
" position: absolute;\n"
103+
" top: 0em;\n"
104+
" right: 1em;\n"
105+
" line-height: 2.8em;\n"
106+
"}\n"
107+
"\n"
108+
"div.is-sorted input {\n"
109+
" position: relative;\n"
110+
" top: 2px;\n"
111+
"}\n"
112+
"\n"
100113
"#plot {\n"
101114
" position: absolute;\n"
102115
" min-width: 300px;\n"
@@ -281,6 +294,10 @@
281294
" {% endfor %}\n"
282295
" </select>\n"
283296
" </div>\n"
297+
" <div class=\"is-sorted\">\n"
298+
" <input id=\"is-sorted\" type=\"checkbox\"/>\n"
299+
" <label for=\"is-sorted\">sorted</label>\n"
300+
" </div>\n"
284301
" </div>\n"
285302
" <div id=\"plot\"></div>\n"
286303
" <div id=\"footer\">Generated with <a href=\"http://flamingdangerzone.com/nonius\">nonius</a></div>\n"
@@ -311,7 +328,8 @@
311328
" },{% endfor %}\n"
312329
" ]\n"
313330
" };\n"
314-
"\n"
331+
" var origOrder = data.runs[0].benchmarks.map(function (_, i) { return i; })\n"
332+
" var sortOrder = computeSortedOrder();\n"
315333
" var plotdiv = document.getElementById(\"plot\");\n"
316334
" window.addEventListener(\"resize\", function() {\n"
317335
" Plotly.Plots.resize(plotdiv);\n"
@@ -322,28 +340,65 @@
322340
" chooser.addEventListener(\"blur\", chooser.focus.bind(chooser));\n"
323341
" chooser.focus();\n"
324342
"\n"
343+
" var isSortedBox = document.getElementById(\"is-sorted\");\n"
344+
" isSortedBox.addEventListener(\"change\", choosePlot);\n"
345+
"\n"
325346
" var legendStyle = {\n"
326347
" font: { family: 'monospace' },\n"
327348
" borderwidth: 2,\n"
328349
" bordercolor: 'black'\n"
329350
" }\n"
330351
"\n"
352+
" function zeroes(count) {\n"
353+
" var arr = []\n"
354+
" while (count --> 0) arr.push(0)\n"
355+
" return arr\n"
356+
" }\n"
357+
"\n"
358+
" function computeSortedOrder() {\n"
359+
" // We sort each run. Then we compute the \"points\" of each\n"
360+
" // benchmark as the sum of the positions of this benchmkark on\n"
361+
" // each run. This gives us a rough indication of which\n"
362+
" // benchmark is best -- the lower the points, the better.\n"
363+
" var runsOrder = data.runs.map(function (r) {\n"
364+
" order = r.benchmarks.map(function (_, i) { return i; })\n"
365+
" order.sort(function (a, b) {\n"
366+
" return r.benchmarks[a].mean - r.benchmarks[b].mean\n"
367+
" })\n"
368+
" return order\n"
369+
" })\n"
370+
" var length = data.runs[0].benchmarks.length\n"
371+
" var points = runsOrder.reduce(function (acc, r) {\n"
372+
" r.forEach(function (elem, idx) {\n"
373+
" acc[elem] += idx\n"
374+
" })\n"
375+
" return acc\n"
376+
" }, zeroes(length))\n"
377+
" var order = data.runs[0].benchmarks.map(function (_, i) { return i; })\n"
378+
" order.sort(function (a, b) {\n"
379+
" return points[a] - points[b]\n"
380+
" })\n"
381+
" return order\n"
382+
" }\n"
383+
"\n"
331384
" function choosePlot() {\n"
332-
" var plot = chooser.options[chooser.selectedIndex].value;\n"
385+
" var plot = chooser.options[chooser.selectedIndex].value\n"
386+
" var order = isSortedBox.checked ? sortOrder : origOrder\n"
333387
" if (plot == 'summary') {\n"
334388
" if (data.runs.length > 1) {\n"
335-
" plotSummary();\n"
389+
" plotSummary(order);\n"
336390
" } else {\n"
337-
" plotSingleSummary();\n"
391+
" plotSingleSummary(order);\n"
338392
" }\n"
339393
" } else {\n"
340-
" plotSamples(plot);\n"
394+
" plotSamples(plot, order);\n"
341395
" }\n"
342396
" }\n"
343397
"\n"
344-
" function plotSamples(plot) {\n"
398+
" function plotSamples(plot, order) {\n"
345399
" var run = data.runs[plot];\n"
346-
" var traces = run.benchmarks.map(function (b, i) {\n"
400+
" var traces = order.map(function (i) {\n"
401+
" var b = run.benchmarks[i]\n"
347402
" return {\n"
348403
" name: b.name,\n"
349404
" type: 'scatter',\n"
@@ -367,10 +422,10 @@
367422
" Plotly.newPlot(plotdiv, traces, layout);\n"
368423
" }\n"
369424
"\n"
370-
" function plotSummary() {\n"
371-
" var traces = data.runs[0].benchmarks.map(function (b, i) {\n"
425+
" function plotSummary(order) {\n"
426+
" var traces = order.map(function (i) {\n"
372427
" return {\n"
373-
" name: b.name,\n"
428+
" name: data.runs[0].benchmarks[i].name,\n"
374429
" type: 'scatter',\n"
375430
" marker: { symbol: i },\n"
376431
" x: data.runs.map(function (r) { return r.params[data.param]; }),\n"
@@ -400,12 +455,13 @@
400455
" Plotly.newPlot(plotdiv, traces, layout);\n"
401456
" }\n"
402457
"\n"
403-
" function plotSingleSummary() {\n"
404-
" var traces = data.runs[0].benchmarks.map(function (b, i) {\n"
458+
" function plotSingleSummary(order) {\n"
459+
" var traces = order.map(function (i) {\n"
460+
" var b = data.runs[0].benchmarks[i]\n"
405461
" return {\n"
406462
" type: 'bar',\n"
407463
" name: b.name,\n"
408-
" x: [ 0 ],\n"
464+
" x: [ data.title ],\n"
409465
" y: [ b.mean ],\n"
410466
" error_y: {\n"
411467
" type: 'data',\n"

tpl/html_report.g.tpl

Lines changed: 69 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,7 @@
7979
display: block;
8080
padding: 0 3em 0 1.5em;
8181
margin: 0.3em;
82+
height: 2em;
8283

8384
transition: border-color 0.2s;
8485
border: 2px solid #aaa;
@@ -97,6 +98,18 @@
9798
color: white;
9899
}
99100

101+
div.is-sorted {
102+
position: absolute;
103+
top: 0em;
104+
right: 1em;
105+
line-height: 2.8em;
106+
}
107+
108+
div.is-sorted input {
109+
position: relative;
110+
top: 2px;
111+
}
112+
100113
#plot {
101114
position: absolute;
102115
min-width: 300px;
@@ -161,6 +174,10 @@ e.exports=function(t,e,n){function l(n,r){return o.coerce(t,e,i,n,r)}for(var s=!
161174
{% endfor %}
162175
</select>
163176
</div>
177+
<div class="is-sorted">
178+
<input id="is-sorted" type="checkbox"/>
179+
<label for="is-sorted">sorted</label>
180+
</div>
164181
</div>
165182
<div id="plot"></div>
166183
<div id="footer">Generated with <a href="http://flamingdangerzone.com/nonius">nonius</a></div>
@@ -191,7 +208,8 @@ e.exports=function(t,e,n){function l(n,r){return o.coerce(t,e,i,n,r)}for(var s=!
191208
},{% endfor %}
192209
]
193210
};
194-
211+
var origOrder = data.runs[0].benchmarks.map(function (_, i) { return i; })
212+
var sortOrder = computeSortedOrder();
195213
var plotdiv = document.getElementById("plot");
196214
window.addEventListener("resize", function() {
197215
Plotly.Plots.resize(plotdiv);
@@ -202,28 +220,65 @@ e.exports=function(t,e,n){function l(n,r){return o.coerce(t,e,i,n,r)}for(var s=!
202220
chooser.addEventListener("blur", chooser.focus.bind(chooser));
203221
chooser.focus();
204222

223+
var isSortedBox = document.getElementById("is-sorted");
224+
isSortedBox.addEventListener("change", choosePlot);
225+
205226
var legendStyle = {
206227
font: { family: 'monospace' },
207228
borderwidth: 2,
208229
bordercolor: 'black'
209230
}
210231

232+
function zeroes(count) {
233+
var arr = []
234+
while (count --> 0) arr.push(0)
235+
return arr
236+
}
237+
238+
function computeSortedOrder() {
239+
// We sort each run. Then we compute the "points" of each
240+
// benchmark as the sum of the positions of this benchmkark on
241+
// each run. This gives us a rough indication of which
242+
// benchmark is best -- the lower the points, the better.
243+
var runsOrder = data.runs.map(function (r) {
244+
order = r.benchmarks.map(function (_, i) { return i; })
245+
order.sort(function (a, b) {
246+
return r.benchmarks[a].mean - r.benchmarks[b].mean
247+
})
248+
return order
249+
})
250+
var length = data.runs[0].benchmarks.length
251+
var points = runsOrder.reduce(function (acc, r) {
252+
r.forEach(function (elem, idx) {
253+
acc[elem] += idx
254+
})
255+
return acc
256+
}, zeroes(length))
257+
var order = data.runs[0].benchmarks.map(function (_, i) { return i; })
258+
order.sort(function (a, b) {
259+
return points[a] - points[b]
260+
})
261+
return order
262+
}
263+
211264
function choosePlot() {
212-
var plot = chooser.options[chooser.selectedIndex].value;
265+
var plot = chooser.options[chooser.selectedIndex].value
266+
var order = isSortedBox.checked ? sortOrder : origOrder
213267
if (plot == 'summary') {
214268
if (data.runs.length > 1) {
215-
plotSummary();
269+
plotSummary(order);
216270
} else {
217-
plotSingleSummary();
271+
plotSingleSummary(order);
218272
}
219273
} else {
220-
plotSamples(plot);
274+
plotSamples(plot, order);
221275
}
222276
}
223277

224-
function plotSamples(plot) {
278+
function plotSamples(plot, order) {
225279
var run = data.runs[plot];
226-
var traces = run.benchmarks.map(function (b, i) {
280+
var traces = order.map(function (i) {
281+
var b = run.benchmarks[i]
227282
return {
228283
name: b.name,
229284
type: 'scatter',
@@ -247,10 +302,10 @@ e.exports=function(t,e,n){function l(n,r){return o.coerce(t,e,i,n,r)}for(var s=!
247302
Plotly.newPlot(plotdiv, traces, layout);
248303
}
249304

250-
function plotSummary() {
251-
var traces = data.runs[0].benchmarks.map(function (b, i) {
305+
function plotSummary(order) {
306+
var traces = order.map(function (i) {
252307
return {
253-
name: b.name,
308+
name: data.runs[0].benchmarks[i].name,
254309
type: 'scatter',
255310
marker: { symbol: i },
256311
x: data.runs.map(function (r) { return r.params[data.param]; }),
@@ -280,12 +335,13 @@ e.exports=function(t,e,n){function l(n,r){return o.coerce(t,e,i,n,r)}for(var s=!
280335
Plotly.newPlot(plotdiv, traces, layout);
281336
}
282337

283-
function plotSingleSummary() {
284-
var traces = data.runs[0].benchmarks.map(function (b, i) {
338+
function plotSingleSummary(order) {
339+
var traces = order.map(function (i) {
340+
var b = data.runs[0].benchmarks[i]
285341
return {
286342
type: 'bar',
287343
name: b.name,
288-
x: [ 0 ],
344+
x: [ data.title ],
289345
y: [ b.mean ],
290346
error_y: {
291347
type: 'data',

tpl/html_report.tpl

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,10 @@
2222
{% endfor %}
2323
</select>
2424
</div>
25+
<div class="is-sorted">
26+
<input id="is-sorted" type="checkbox"/>
27+
<label for="is-sorted">sorted</label>
28+
</div>
2529
</div>
2630
<div id="plot"></div>
2731
<div id="footer">Generated with <a href="http://flamingdangerzone.com/nonius">nonius</a></div>

0 commit comments

Comments
 (0)