analysis: show wrapped query in place of result index
Change-Id: I127a31864e96691bca504e81662a2992d5ee9f58
Reviewed-on: https://go-review.googlesource.com/36011
Reviewed-by: Russ Cox <rsc@golang.org>
diff --git a/analysis/app/compare.go b/analysis/app/compare.go
index 0f22147..0ed01bd 100644
--- a/analysis/app/compare.go
+++ b/analysis/app/compare.go
@@ -22,6 +22,8 @@
// A resultGroup holds a list of results and tracks the distinct labels found in that list.
type resultGroup struct {
+ // The (partial) query string that resulted in this group.
+ Q string
// Raw list of results.
results []*benchfmt.Result
// LabelValues is the count of results found with each distinct (key, value) pair found in labels.
@@ -52,13 +54,13 @@
}
// splitOn returns a new set of groups sharing a common value for key.
-func (g *resultGroup) splitOn(key string) ([]string, []*resultGroup) {
+func (g *resultGroup) splitOn(key string) []*resultGroup {
groups := make(map[string]*resultGroup)
var values []string
for _, res := range g.results {
value := res.Labels[key]
if groups[value] == nil {
- groups[value] = &resultGroup{}
+ groups[value] = &resultGroup{Q: key + ":" + value}
values = append(values, value)
}
groups[value].add(res)
@@ -69,7 +71,7 @@
for _, value := range values {
out = append(out, groups[value])
}
- return values, out
+ return out
}
// valueSet is a set of values and the number of results with each value.
@@ -229,7 +231,7 @@
var found int
for _, qPart := range queries {
keys := queryKeys(qPart)
- group := &resultGroup{}
+ group := &resultGroup{Q: qPart}
if prefix != "" {
qPart = prefix + " " + qPart
}
@@ -264,21 +266,15 @@
group := groups[0]
// Matching a single upload with multiple files -> split by file
if len(group.LabelValues["upload"]) == 1 && len(group.LabelValues["upload-part"]) > 1 {
- var values []string
- values, groups = group.splitOn("upload-part")
- q := make([]string, len(values))
- for i, v := range values {
- q[i] = "upload-part:" + v
- }
- queries = q
+ groups = group.splitOn("upload-part")
}
}
var buf bytes.Buffer
// Compute benchstat
c := new(benchstat.Collection)
- for i, g := range groups {
- c.AddResults(queries[i], g.results)
+ for _, g := range groups {
+ c.AddResults(g.Q, g.results)
}
benchstat.FormatHTML(&buf, c.Tables())
diff --git a/analysis/appengine/template/compare.html b/analysis/appengine/template/compare.html
index ec24663..afe1cea 100644
--- a/analysis/appengine/template/compare.html
+++ b/analysis/appengine/template/compare.html
@@ -53,13 +53,20 @@
#labels .diff {
padding-bottom: 1em;
}
-#labels .diff table td {
+#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; }
@@ -108,7 +115,7 @@
<th class="label">{{$label}}</th>
<td>
{{range $index, $group := $.Groups}}
- Query {{$index}}:
+ <div class="query">{{$group.Q}}:</div>
<table>
{{with index $group.LabelValues $label}}
{{range .TopN 4}}