VictoriaMetrics/lib/bytesutil/fast_string_matcher_timing_test.go
Aliaksandr Valialkin b4bb1477fe
lib/regexutil: cache MatchString results for unoptimized regexps
This increases relabeling performance by 3x for unoptimized regexs
2022-09-30 12:28:25 +03:00

34 lines
619 B
Go

package bytesutil
import (
"strings"
"sync/atomic"
"testing"
)
func BenchmarkFastStringMatcher(b *testing.B) {
for _, s := range []string{"", "foo", "foo-bar-baz", "http_requests_total"} {
b.Run(s, func(b *testing.B) {
benchmarkFastStringMatcher(b, s)
})
}
}
func benchmarkFastStringMatcher(b *testing.B, s string) {
fsm := NewFastStringMatcher(func(s string) bool {
return strings.HasPrefix(s, "foo")
})
b.ReportAllocs()
b.SetBytes(1)
b.RunParallel(func(pb *testing.PB) {
n := uint64(0)
for pb.Next() {
v := fsm.Match(s)
if v {
n++
}
}
atomic.AddUint64(&GlobalSink, n)
})
}