From e626cee8f7de0dd3ffca4c7297e59a87f790cc02 Mon Sep 17 00:00:00 2001 From: sangtran Date: Sat, 5 Sep 2026 17:06:30 +0700 Subject: feat: add on pebble state backend and using sync Pool to reuse buffer []byte --- core/pool.go | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 core/pool.go (limited to 'core/pool.go') diff --git a/core/pool.go b/core/pool.go new file mode 100644 index 0000000..484b342 --- /dev/null +++ b/core/pool.go @@ -0,0 +1,38 @@ +package core + +import "sync" + + +const ( + DefaultBufferSize = 1024 + MaxBufferSize = 64 * 1024 +) + +var bytesPool = sync.Pool{ + New: func () any { + b := make([]byte, DefaultBufferSize) + return &b + }, +} + +func GetBuffer(size int) []byte { + bufPtr := bytesPool.Get().(*[]byte) + + buf := *bufPtr + + + if size > cap(buf) { + buf = make([]byte, size) + } + + return buf[:size] +} + + +func PutBuffer(buf []byte) { + if cap(buf) < MaxBufferSize{ + // reset + buf = buf[:0] + bytesPool.Put(&buf) + } +} -- cgit v1.3.1