mirror of
https://github.com/VictoriaMetrics/VictoriaMetrics.git
synced 2024-11-21 14:44:00 +00:00
34 lines
619 B
Go
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)
|
||
|
})
|
||
|
}
|