diff options
Diffstat (limited to 'src/html/benchmark_report.html.tt')
-rwxr-xr-x | src/html/benchmark_report.html.tt | 308 |
1 files changed, 308 insertions, 0 deletions
diff --git a/src/html/benchmark_report.html.tt b/src/html/benchmark_report.html.tt new file mode 100755 index 0000000..5b0679e --- /dev/null +++ b/src/html/benchmark_report.html.tt @@ -0,0 +1,308 @@ +<!DOCTYPE html> +<html> + +<head> + <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> + <title>{title} - Criterion.rs</title> + <style type="text/css"> + body \{ + font: 14px Helvetica Neue; + text-rendering: optimizelegibility; + } + + .body \{ + width: 960px; + margin: auto; + } + + th \{ + font-weight: 200 + } + + th, + td \{ + padding-right: 3px; + padding-bottom: 3px; + } + + a:link \{ + color: #1F78B4; + text-decoration: none; + } + + th.ci-bound \{ + opacity: 0.6 + } + + td.ci-bound \{ + opacity: 0.5 + } + + .stats \{ + width: 80%; + margin: auto; + display: flex; + } + + .additional_stats \{ + flex: 0 0 60% + } + + .additional_plots \{ + flex: 1 + } + + h2 \{ + font-size: 36px; + font-weight: 300; + } + + h3 \{ + font-size: 24px; + font-weight: 300; + } + + #footer \{ + height: 40px; + background: #888; + color: white; + font-size: larger; + font-weight: 300; + } + + #footer a \{ + color: white; + text-decoration: underline; + } + + #footer p \{ + text-align: center + } + </style> +</head> + +<body> + <div class="body"> + <h2>{title}</h2> + <div class="absolute"> + <section class="plots"> + <table width="100%"> + <tbody> + <tr> + <td> + <a href="pdf.svg"> + <img src="pdf_small.svg" alt="PDF of Slope" width="{thumbnail_width}" height="{thumbnail_height}" /> + </a> + </td> + <td> + {{- if slope }} + <a href="regression.svg"> + <img src="regression_small.svg" alt="Regression" width="{thumbnail_width}" height="{thumbnail_height}" /> + </a> + {{- else }} + <a href="iteration_times.svg"> + <img src="iteration_times_small.svg" alt="Iteration Times" width="{thumbnail_width}" height="{thumbnail_height}" /> + </a> + {{- endif }} + </td> + </tr> + </tbody> + </table> + </section> + <section class="stats"> + <div class="additional_stats"> + <h4>Additional Statistics:</h4> + <table> + <thead> + <tr> + <th></th> + <th title="{confidence} confidence level" class="ci-bound">Lower bound</th> + <th>Estimate</th> + <th title="{confidence} confidence level" class="ci-bound">Upper bound</th> + </tr> + </thead> + <tbody> + {{- if slope }} + <tr> + <td>Slope</td> + <td class="ci-bound">{slope.lower}</td> + <td>{slope.point}</td> + <td class="ci-bound">{slope.upper}</td> + </tr> + {{- endif }} + {{- if throughput }} + <tr> + <td>Throughput</td> + <td class="ci-bound">{throughput.lower}</td> + <td>{throughput.point}</td> + <td class="ci-bound">{throughput.upper}</td> + </tr> + {{- endif }} + <tr> + <td>R²</td> + <td class="ci-bound">{r2.lower}</td> + <td>{r2.point}</td> + <td class="ci-bound">{r2.upper}</td> + </tr> + <tr> + <td>Mean</td> + <td class="ci-bound">{mean.lower}</td> + <td>{mean.point}</td> + <td class="ci-bound">{mean.upper}</td> + </tr> + <tr> + <td title="Standard Deviation">Std. Dev.</td> + <td class="ci-bound">{std_dev.lower}</td> + <td>{std_dev.point}</td> + <td class="ci-bound">{std_dev.upper}</td> + </tr> + <tr> + <td>Median</td> + <td class="ci-bound">{median.lower}</td> + <td>{median.point}</td> + <td class="ci-bound">{median.upper}</td> + </tr> + <tr> + <td title="Median Absolute Deviation">MAD</td> + <td class="ci-bound">{mad.lower}</td> + <td>{mad.point}</td> + <td class="ci-bound">{mad.upper}</td> + </tr> + </tbody> + </table> + </div> + {{- if additional_plots }} + <div class="additional_plots"> + <h4>Additional Plots:</h4> + <ul> + {{for plot in additional_plots }} + <li> + <a href="{plot.url}">{plot.name}</a> + </li> + {{- endfor }} + </ul> + </div> + {{- endif }} + </section> + <section class="explanation"> + <h4>Understanding this report:</h4> + <p>The plot on the left displays the average time per iteration for this benchmark. The shaded region + shows the estimated probabilty of an iteration taking a certain amount of time, while the line + shows the mean. Click on the plot for a larger view showing the outliers.</p> + {{- if slope }} + <p>The plot on the right shows the linear regression calculated from the measurements. Each point + represents a sample, though here it shows the total time for the sample rather than time per + iteration. The line is the line of best fit for these measurements.</p> + {{- else }} + <p>The plot on the right shows the average time per iteration for the samples. Each point + represents one sample.</p> + {{- endif }} + <p>See <a href="https://bheisler.github.io/criterion.rs/book/user_guide/command_line_output.html#additional-statistics">the + documentation</a> for more details on the additional statistics.</p> + </section> + </div> + {{- if comparison }} + <section class="plots"> + <h3>Change Since Previous Benchmark</h3> + <div class="relative"> + <table width="100%"> + <tbody> + <tr> + <td> + <a href="both/pdf.svg"> + <img src="relative_pdf_small.svg" alt="PDF Comparison" width="{thumbnail_width}" + height="{thumbnail_height}" /> + </a> + </td> + <td> + {{- if slope }} + <a href="both/regression.svg"> + <img src="relative_regression_small.svg" alt="Regression Comparison" width="{thumbnail_width}" + height="{thumbnail_height}" /> + </a> + {{- else }} + <a href="both/iteration_times.svg"> + <img src="relative_iteration_times_small.svg" alt="Iteration Time Comparison" width="{thumbnail_width}" + height="{thumbnail_height}" /> + </a> + {{- endif }} + </td> + </tr> + </tbody> + </table> + </div> + </section> + <section class="stats"> + <div class="additional_stats"> + <h4>Additional Statistics:</h4> + <table> + <thead> + <tr> + <th></th> + <th title="{confidence} confidence level" class="ci-bound">Lower bound</th> + <th>Estimate</th> + <th title="{confidence} confidence level" class="ci-bound">Upper bound</th> + <th></th> + </tr> + </thead> + <tbody> + <tr> + <td>Change in time</td> + <td class="ci-bound">{comparison.change.lower}</td> + <td>{comparison.change.point}</td> + <td class="ci-bound">{comparison.change.upper}</td> + <td>(p = {comparison.p_value} {comparison.inequality} + {comparison.significance_level})</td> + </tr> + {{- if comparison.thrpt_change }} + <tr> + <td>Change in throughput</td> + <td class="ci-bound">{comparison.thrpt_change.lower}</td> + <td>{comparison.thrpt_change.point}</td> + <td class="ci-bound">{comparison.thrpt_change.upper}</td> + <td></td> + </tr> + {{- endif }} + </tbody> + </table> + {comparison.explanation} + </div> + {{- if comparison.additional_plots }} + <div class="additional_plots"> + <h4>Additional Plots:</h4> + <ul> + {{ for plot in comparison.additional_plots }} + <li> + <a href="{plot.url}">{plot.name}</a> + </li> + {{- endfor }} + </ul> + </div> + {{- endif }} + </section> + <section class="explanation"> + <h4>Understanding this report:</h4> + <p>The plot on the left shows the probability of the function taking a certain amount of time. The red + curve represents the saved measurements from the last time this benchmark was run, while the blue curve + shows the measurements from this run. The lines represent the mean time per iteration. Click on the + plot for a larger view.</p> + {{- if slope }} + <p>The plot on the right shows the two regressions. Again, the red line represents the previous measurement + while the blue line shows the current measurement.</p> + {{- else }} + <p>The plot on the right shows the iteration times for the two measurements. Again, the red dots represent + the previous measurement while the blue dots show the current measurement.</p> + {{- endif}} + <p>See <a href="https://bheisler.github.io/criterion.rs/book/user_guide/command_line_output.html#change">the + documentation</a> for more details on the additional statistics.</p> + </section> + {{- endif }} + </div> + <div id="footer"> + <p>This report was generated by + <a href="https://github.com/bheisler/criterion.rs">Criterion.rs</a>, a statistics-driven benchmarking + library in Rust.</p> + </div> +</body> + +</html>
\ No newline at end of file |