func addTableHeader(t *termtables.Table) { var lenLongestName int for name := range *bench.results { if tmpLen := len(name); tmpLen > lenLongestName { lenLongestName = tmpLen } } // add padding to first col since alignment in header columns does not work // padding of longest name + len("name") + 1 padding right nameCol := make([]byte, 0, lenLongestName+4+1) nameCol = append(nameCol, []byte("Name")...) for i := 0; i < lenLongestName; i++ { nameCol = append(nameCol, byte(32)) } if bench.info.benchmemUsed { if bench.info.hasFnIterations { t.AddHeaders(bold(string(nameCol)), bold("Iterations"), bold("Runs"), bold(bench.info.suggestedTiming+"/op"), bold("B/op"), bold("allocations/op")) } else { t.AddHeaders(bold(string(nameCol)), bold("Runs"), bold(bench.info.suggestedTiming+"/op"), bold("B/op"), bold("allocations/op")) } } else { if bench.info.hasFnIterations { t.AddHeaders(bold(string(nameCol)), bold("Iterations"), bold("Runs"), bold(bench.info.suggestedTiming+"/op")) } else { t.AddHeaders(bold(string(nameCol)), bold("Runs"), bold(bench.info.suggestedTiming+"/op")) } } }
func addTableBody(t *termtables.Table) { floatFmt := fmtFloat if bench.info.suggestedTiming == "ns" { floatFmt = fmtFloatNS } i := len(*bench.results) sorted := make([]string, 0, i) for name := range *bench.results { sorted = append(sorted, name) } sort.Sort(sort.StringSlice(sorted)) for _, benchName := range sorted { results := (*bench.results)[benchName] for j, b := range results { var name string if j == 0 { name = bold(b.Name) } if bench.info.benchmemUsed { if bench.info.hasFnIterations { fnIterations := strconv.Itoa(b.FnIterations) if fnIterations == "-1" { fnIterations = "" } else { i, err := strconv.Atoi(fnIterations) if err != nil { fnIterations = "" } else { fnIterations = RenderInteger(fmtInt, i) } } t.AddRow(name, fnIterations, RenderInteger(fmtInt, b.Runs), RenderFloat(floatFmt, b.Speed), RenderInteger(fmtInt, b.Bps), RenderInteger(fmtInt, b.Aps)) } else { t.AddRow(name, RenderInteger(fmtInt, b.Runs), RenderFloat(floatFmt, b.Speed), RenderInteger(fmtInt, b.Bps), RenderInteger(fmtInt, b.Aps)) } } else { if bench.info.hasFnIterations { fnIterations := strconv.Itoa(b.FnIterations) if fnIterations == "-1" { fnIterations = "" } else { i, err := strconv.Atoi(fnIterations) if err != nil { fnIterations = "" } else { fnIterations = RenderInteger(fmtInt, i) } } t.AddRow(name, fnIterations, RenderInteger(fmtInt, b.Runs), RenderFloat(floatFmt, b.Speed)) } else { t.AddRow(name, RenderInteger(fmtInt, b.Runs), RenderFloat(floatFmt, b.Speed)) } } } i-- if i > 0 { t.AddSeparator() } } t.SetAlign(termtables.AlignLeft, 1) }