Esempio n. 1
0
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"))
		}
	}
}
Esempio n. 2
0
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)
}