benchcomp: Add a mode for analyzing rule execution time in ninja log files.

llvm-svn: 265860
This commit is contained in:
Peter Collingbourne
2016-04-08 22:42:22 +00:00
parent 86e8cc8a9b
commit b24f4fb617

View File

@@ -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])