1
0
mirror of https://github.com/imgproxy/imgproxy.git synced 2024-12-09 09:56:01 +02:00
imgproxy/bufpool/bufpool_test.go
2023-05-01 20:25:25 +03:00

51 lines
826 B
Go

package bufpool
import (
"math/rand"
"sync"
"testing"
"time"
"github.com/imgproxy/imgproxy/v3/config"
)
var (
testData [][]byte
testDataOnce sync.Once
testMu sync.Mutex
)
func initTestData() {
testData = make([][]byte, 1000)
for i := 6; i < 1000; i++ {
testData[i] = make([]byte, i*1271)
}
rand.Seed(time.Now().UnixNano())
rand.Shuffle(len(testData), func(i, j int) { testData[i], testData[j] = testData[j], testData[i] })
}
func BenchmarkBufpool(b *testing.B) {
testMu.Lock()
defer testMu.Unlock()
config.Reset()
testDataOnce.Do(initTestData)
pool := New("test", 16, 0)
b.ResetTimer()
b.SetParallelism(16)
b.RunParallel(func(pb *testing.PB) {
for pb.Next() {
for _, bb := range testData {
buf := pool.Get(len(bb), false)
buf.Write(bb)
pool.Put(buf)
}
}
})
}