diff --git a/perfdata/list.go b/perfdata/list.go index de5d4f1..f13bf09 100644 --- a/perfdata/list.go +++ b/perfdata/list.go @@ -12,14 +12,11 @@ func (l PerfdataList) String() string { var out strings.Builder for _, p := range l { - if len(out.String()) > 0 { - out.WriteString(" ") - } - + out.WriteString(" ") out.WriteString(p.String()) } - return out.String() + return strings.Trim(out.String(), " ") } // Add a Perfdata to the list diff --git a/perfdata/list_test.go b/perfdata/list_test.go index ac758d6..57e3c9a 100644 --- a/perfdata/list_test.go +++ b/perfdata/list_test.go @@ -25,3 +25,16 @@ func TestPerfdataListFormating(t *testing.T) { assert.Equal(t, "test1=23 test2=42", list.String()) } + +func BenchmarkPerfdataListFormating(b *testing.B) { + b.ReportAllocs() + + list := PerfdataList{} + list.Add(&Perfdata{Label: "test1", Value: 23}) + list.Add(&Perfdata{Label: "test2", Value: 42}) + + for i := 0; i < b.N; i++ { + l := list.String() + _ = l + } +} diff --git a/result/worst_test.go b/result/worst_test.go index 51cb746..5795e7d 100644 --- a/result/worst_test.go +++ b/result/worst_test.go @@ -20,3 +20,18 @@ func TestWorstState(t *testing.T) { assert.Equal(t, 3, WorstState(-1)) assert.Equal(t, 3, WorstState(4)) } + +func BenchmarkWorstState(b *testing.B) { + b.ReportAllocs() + + // Initialize slice for benchmarking + states := make([]int, 0, 100) + for i := 0; i < 100; i++ { + states = append(states, i%4) + } + + for i := 0; i < b.N; i++ { + s := WorstState(states...) + _ = s + } +} diff --git a/threshold.go b/threshold.go index 625ad88..73ebeed 100644 --- a/threshold.go +++ b/threshold.go @@ -125,9 +125,5 @@ func BoundaryToString(value float64) (s string) { // FormatFloat returns a string representation of floats, avoiding scientific notation and removes trailing zeros. func FormatFloat(value float64) string { - s := fmt.Sprintf("%.3f", value) - s = strings.TrimRight(s, "0") // remove trailing 0 - s = strings.TrimRight(s, ".") // remove trailing dot - - return s + return strings.TrimRight(strings.TrimRight(fmt.Sprintf("%.3f", value), "0"), ".") // remove trailing 0 and trailing dot }