diff options
author | Peter Collingbourne <peter@pcc.me.uk> | 2016-04-08 22:42:22 +0000 |
---|---|---|
committer | Peter Collingbourne <peter@pcc.me.uk> | 2016-04-08 22:42:22 +0000 |
commit | b24f4fb6171eaf2caa8f3cf6adcf11821ec1d27c (patch) | |
tree | b814cc9651aa08d877d84d875c8cb220ed5aab1f /llgo | |
parent | 86e8cc8a9b0689ebb1a797bf7070bea092408653 (diff) | |
download | bcm5719-llvm-b24f4fb6171eaf2caa8f3cf6adcf11821ec1d27c.tar.gz bcm5719-llvm-b24f4fb6171eaf2caa8f3cf6adcf11821ec1d27c.zip |
benchcomp: Add a mode for analyzing rule execution time in ninja log files.
llvm-svn: 265860
Diffstat (limited to 'llgo')
-rw-r--r-- | llgo/utils/benchcomp/main.go | 31 |
1 files changed, 31 insertions, 0 deletions
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]) |