2015-05-23 13:08:17 +00:00
|
|
|
// Copyright (C) 2015 The Syncthing Authors.
|
|
|
|
//
|
|
|
|
// This Source Code Form is subject to the terms of the Mozilla Public
|
|
|
|
// License, v. 2.0. If a copy of the MPL was not distributed with this file,
|
2017-02-09 06:52:18 +00:00
|
|
|
// You can obtain one at https://mozilla.org/MPL/2.0/.
|
2015-05-23 13:08:17 +00:00
|
|
|
|
|
|
|
// +build ignore
|
|
|
|
|
|
|
|
// Neatly format benchmarking output which otherwise looks like crap.
|
|
|
|
package main
|
|
|
|
|
|
|
|
import (
|
|
|
|
"bufio"
|
|
|
|
"fmt"
|
|
|
|
"os"
|
|
|
|
"regexp"
|
2015-08-12 21:04:19 +00:00
|
|
|
"strings"
|
2015-05-23 13:08:17 +00:00
|
|
|
"text/tabwriter"
|
|
|
|
)
|
|
|
|
|
|
|
|
var (
|
2015-08-12 21:04:19 +00:00
|
|
|
benchRe = regexp.MustCompile(`^(Bench[^\s]+)\s+(\d+)\s+(\d+ ns/op)\s*(\d+ B/op)?\s*(\d+ allocs/op)?`)
|
2015-05-23 13:08:17 +00:00
|
|
|
)
|
|
|
|
|
|
|
|
func main() {
|
|
|
|
tw := tabwriter.NewWriter(os.Stdout, 1, 1, 1, ' ', 0)
|
|
|
|
br := bufio.NewScanner(os.Stdin)
|
|
|
|
n := 0
|
|
|
|
|
|
|
|
for br.Scan() {
|
2015-08-12 21:04:19 +00:00
|
|
|
line := br.Text()
|
2015-05-23 13:08:17 +00:00
|
|
|
|
2015-08-12 21:04:19 +00:00
|
|
|
if match := benchRe.FindStringSubmatch(line); match != nil {
|
2015-05-23 13:08:17 +00:00
|
|
|
n++
|
2015-08-12 21:04:19 +00:00
|
|
|
for i := range match[2:] {
|
|
|
|
match[2+i] = fmt.Sprintf("%16s", match[2+i])
|
|
|
|
}
|
|
|
|
tw.Write([]byte(strings.Join(match[1:], "\t") + "\n"))
|
|
|
|
} else if n > 0 && strings.HasPrefix(line, "ok") {
|
2015-05-23 13:08:17 +00:00
|
|
|
n = 0
|
|
|
|
tw.Flush()
|
|
|
|
fmt.Printf("%s\n\n", line)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
tw.Flush()
|
|
|
|
}
|