lolly/internal/matcher/radix_bench_test.go

44 lines
1.1 KiB
Go

package matcher
import (
"testing"
"github.com/valyala/fasthttp"
)
func BenchmarkRadixTreeFindLongestPrefix(b *testing.B) {
tree := NewRadixTree()
paths := []string{"/", "/api", "/api/v1", "/api/v1/users", "/static", "/static/css", "/static/js", "/health", "/favicon.ico"}
dummyHandler := func(ctx *fasthttp.RequestCtx) {}
for _, p := range paths {
tree.Insert(p, dummyHandler, 0, LocationTypePrefix, false)
}
tree.MarkInitialized()
b.ResetTimer()
b.ReportAllocs()
for b.Loop() {
result := tree.FindLongestPrefix([]byte("/api/v1/users"))
ReleaseMatchResult(result)
}
}
func BenchmarkRadixTreeFindLongestPrefixParallel(b *testing.B) {
tree := NewRadixTree()
paths := []string{"/", "/api", "/api/v1", "/api/v1/users", "/static", "/static/css", "/static/js", "/health", "/favicon.ico"}
dummyHandler := func(ctx *fasthttp.RequestCtx) {}
for _, p := range paths {
tree.Insert(p, dummyHandler, 0, LocationTypePrefix, false)
}
tree.MarkInitialized()
b.ResetTimer()
b.ReportAllocs()
b.RunParallel(func(pb *testing.PB) {
for pb.Next() {
result := tree.FindLongestPrefix([]byte("/api/v1/users"))
ReleaseMatchResult(result)
}
})
}