mirror of
https://github.com/golang/go
synced 2024-11-20 00:04:43 -07:00
strings: Add benchmark test for trim function
The strings.Trim function and variants allocate memory on the heap when creating a function to pass into TrimFunc. Add a benchmark to document the behavior; an issue will be submitted to address this behavior in the compiler if possible. Change-Id: I8b66721f077951f7e7b8cf3cf346fac27a9b68c0 Reviewed-on: https://go-review.googlesource.com/8200 Reviewed-by: Ian Lance Taylor <iant@golang.org>
This commit is contained in:
parent
c45751e8a5
commit
6262192cd0
@ -569,6 +569,35 @@ func TestTrim(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func BenchmarkTrim(b *testing.B) {
|
||||
b.ReportAllocs()
|
||||
|
||||
for i := 0; i < b.N; i++ {
|
||||
for _, tc := range trimTests {
|
||||
name := tc.f
|
||||
var f func(string, string) string
|
||||
switch name {
|
||||
case "Trim":
|
||||
f = Trim
|
||||
case "TrimLeft":
|
||||
f = TrimLeft
|
||||
case "TrimRight":
|
||||
f = TrimRight
|
||||
case "TrimPrefix":
|
||||
f = TrimPrefix
|
||||
case "TrimSuffix":
|
||||
f = TrimSuffix
|
||||
default:
|
||||
b.Errorf("Undefined trim function %s", name)
|
||||
}
|
||||
actual := f(tc.in, tc.arg)
|
||||
if actual != tc.out {
|
||||
b.Errorf("%s(%q, %q) = %q; want %q", name, tc.in, tc.arg, actual, tc.out)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
type predicate struct {
|
||||
f func(rune) bool
|
||||
name string
|
||||
|
Loading…
Reference in New Issue
Block a user