From b24f4fb6171eaf2caa8f3cf6adcf11821ec1d27c Mon Sep 17 00:00:00 2001 From: Peter Collingbourne Date: Fri, 8 Apr 2016 22:42:22 +0000 Subject: benchcomp: Add a mode for analyzing rule execution time in ninja log files. llvm-svn: 265860 --- llgo/utils/benchcomp/main.go | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) (limited to 'llgo') diff --git a/llgo/utils/benchcomp/main.go b/llgo/utils/benchcomp/main.go index 94acafc9db8..a050f7bdd5f 100644 --- a/llgo/utils/benchcomp/main.go +++ b/llgo/utils/benchcomp/main.go @@ -110,6 +110,34 @@ func benchnums(path, stat string) map[string]float64 { return m } +func ninja_logs(path string) map[string]float64 { + m := make(map[string]float64) + + fh, err := os.Open(path) + if err != nil { + panic(err.Error()) + } + + scanner := bufio.NewScanner(fh) + for scanner.Scan() { + elems := strings.Split(scanner.Text(), "\t") + if len(elems) < 4 { + continue + } + begin, err := strconv.ParseInt(elems[0], 10, 64) + if err != nil { + continue + } + end, err := strconv.ParseInt(elems[1], 10, 64) + if err != nil { + panic(err.Error()) + } + m[elems[3]] = float64(end-begin) + } + + return m +} + func main() { var cmp func(string) map[string]float64 switch os.Args[1] { @@ -128,6 +156,9 @@ func main() { cmp = func(path string) map[string]float64 { return benchnums(path, "allocs/op") } + + case "ninja_logs": + cmp = ninja_logs } syms1 := cmp(os.Args[2]) -- cgit v1.2.3