blob: 433ce15f8e26ab85cd4e8154204c7c5b2dec374f [file] [log] [blame]
<!DOCTYPE html>
<!--
Copyright 2022 The Go Authors. All rights reserved.
Use of this source code is governed by a BSD-style
license that can be found in the LICENSE file.
-->
<html>
<head>
<meta charset="utf-8">
<title>Performance Result Comparison</title>
<style type="text/css">
#header h1 {
display: inline;
}
#search {
padding: 1em .5em;
width: 100%;
}
input[type="text"] {
font-size: 100%;
}
#results {
border-top: 1px solid black;
}
tr.diff td {
font-size: 80%;
font-family: sans-serif;
vertical-align: top;
}
th.label {
text-align: left;
vertical-align: top;
}
td.count {
text-align: right;
}
#labels {
float: left;
margin-right: 1em;
border-right: 1px solid black;
border-collapse: collapse;
vertical-align: top;
}
#labels tbody {
border-collapse: collapse;
border-bottom: 1px solid black;
}
#labels > tbody > tr:last-child > th, #labels > tbody > tr:last-child > td {
padding-bottom: 1em;
}
#labels tbody tr:first-child th, #benchstat {
padding-top: 1em;
}
#labels tbody.diff tr:first-child th {
padding-top: 1em;
border-collapse: collapse;
border-top: 1px solid black;
}
#labels .diff {
padding-bottom: 1em;
}
#labels .diff table td, #labels .diff .query {
max-width: 20em;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.benchstat tr.configs th {
max-width: 0;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.benchstat { border-collapse: collapse; }
.benchstat th:nth-child(1) { text-align: left; }
.benchstat tbody td:nth-child(1n+2):not(.note) { text-align: right; padding: 0em 1em; }
.benchstat tr:not(.configs) th { border-top: 1px solid #666; border-bottom: 1px solid #ccc; }
.benchstat .nodelta { text-align: center !important; }
.benchstat .better td.delta { font-weight: bold; }
.benchstat .worse td.delta { font-weight: bold; color: #c00; }
</style>
</head>
<body>
<div id="header">
<h1>Go Performance Dashboard</h1>
<a href="/">about</a>
</div>
<div id="search">
<form action="/search">
<input type="text" name="q" value="{{.Q}}" size="120">
<input type="submit" value="Search">
</form>
</div>
<div id="results">
{{if not .Q}}
<p>The Go Performance Dashboard provides a centralized
resource for sharing and analyzing benchmark results. To get
started, upload benchmark results using
<code>go get -u golang.org/x/perf/cmd/benchsave</code>
and
<code>benchsave old.txt new.txt</code>
or upload via the web at
<a href="https://perfdata-dot-golang-org.appspot.com/upload">https://perfdata-dot-golang-org.appspot.com/upload</a>.</p>
{{else}}
{{with .Error}}
<p>{{.}}</p>
{{else}}
<table id="labels">
{{with $cl := .CommonLabels}}
<tbody>
<tr>
<th>label</th><th>common value</th>
</tr>
{{range $label, $value := .}}
<tr>
<th class="label">{{$label}}</th><td>{{with $href := linkify $cl $label}}<a href="{{$href}}" rel="nofollow">{{$value}}</a>{{else}}{{$value}}{{end}}</td>
</tr>
{{end}}
</tbody>
{{end}}
<tbody class="diff">
<tr>
<th>label</th>
<th>values</th>
</tr>
{{range $label, $exists := .Labels}}
<tr class="diff">
<th class="label">{{$label}}</th>
<td>
{{range $index, $group := $.Groups}}
<div class="query">{{$group.Q}}:</div>
<table>
{{with index $group.LabelValues $label}}
{{range .TopN 4}}
<tr>
<td class="count">
{{.Count}}
</td>
<td>
{{if eq .Value ""}}
missing
{{else if eq .Value "…"}}
{{.Value}}
{{else}}
<a href="/search?q={{addToQuery $.Q (printf "%s:%s" $label .Value)}}">
{{printf "%q" .Value}}
</a>
{{end}}
</td>
</tr>
{{end}}
{{end}}
</table>
{{end}}
</td>
</tr>
{{end}}
</tbody>
</table>
<div id="benchstat">
{{.Benchstat}}
</div>
{{end}}
{{end}}
</div>
</body>
</html>