<!DOCTYPE html>
<html>
  <head>
    <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>
