function benchmarkTable(stats) {
const longestTime = d3.max(stats.map(s => s.max));
const best = d3.min(stats, d => d.mean);
const commas = d3.format(',d');
const fmt = d3.format(',.2f');
return md`
### ${
stats.running
? stats.warmup
? `Running Warmup ${stats.currentTrial} of ${stats.numWarmups}`
: `Running Trial ${stats.currentTrial} of ${stats.numTrials}`
: `${stats.numTrials} Trials`
}
<div style="max-width: 700px"><div style="background: #eee;"><div style="transition: all; background:black;width:${(stats.currentTrial / stats.numTrials) * 100}%;height:3px;"></div>
</div>
<table style="max-width: 100%">
<thead>
<tr>
<th>Method</th>
<th style="text-align:right;">Diff</th>
<th style="text-align:right;">Mean</th>
<th style="text-align:right;">Std. Dev</th>
<th style="text-align:right;">Range</th>
<th style="text-align:right;">Histogram</th>
</tr>
</thead>
<tbody>
${stats.map(
e =>
html`<tr>
<td>${e.name}</td>
<td style="text-align:right; font-variant-numeric: tabular-nums">${
e.mean === best ? "—" : `× ${fmt(e.mean / best)}`
}</td>
<td style="text-align:right; font-variant-numeric: tabular-nums">${fmt(
e.mean
)} ms</td>
<td style="text-align:right; font-variant-numeric: tabular-nums">${fmt(e.sd)}</td>
<td style="text-align:right; font-variant-numeric: tabular-nums">${fmt(e.min)} - ${fmt(e.max)} ms</td>
<td style="text-align:right; font-variant-numeric: tabular-nums">${html`${hist(
e.times,
{
domain: [0, longestTime],
width: 120,
height: 20,
thresholds: 25
}
)}`}</td>
</tr>`
)}
</tbody>
</table>
`;
}