1
0
mirror of https://github.com/charlienet/go-mixed.git synced 2025-07-18 08:32:40 +08:00

字符串解析缓存

This commit is contained in:
2022-06-02 13:46:21 +08:00
parent 6d39dbb942
commit 07273b8b31
2 changed files with 95 additions and 0 deletions

View File

@ -0,0 +1,49 @@
package compiledbuffer
import (
"regexp"
"strconv"
"sync/atomic"
"testing"
)
var s = "^aaa^"
func TestPutGet(t *testing.T) {
b := NewCompiledBuffer(func(s string) (*regexp.Regexp, error) { return regexp.Compile(s) })
t.Log(b.Put(s))
r, _ := b.Get(s)
t.Log(r.Match([]byte("abc")))
}
func BenchmarkGet(b *testing.B) {
b.Run("buf", func(b *testing.B) {
buf := NewCompiledBuffer(func(s string) (*regexp.Regexp, error) { return regexp.Compile(s) })
buf.Put(s)
for i := 0; i < b.N; i++ {
buf.Get(s)
}
})
b.Run("buf", func(b *testing.B) {
for i := 0; i < b.N; i++ {
regexp.Compile(s)
}
})
}
func BenchmarkConcurrence(b *testing.B) {
buf := NewCompiledBuffer(func(s string) (*regexp.Regexp, error) { return regexp.Compile(s) })
var i int64
b.RunParallel(func(p *testing.PB) {
gid := int(atomic.AddInt64(&i, 1) - 1)
for i := 0; p.Next(); i++ {
buf.Get(strconv.Itoa(gid))
}
})
}