aboutsummaryrefslogtreecommitdiff
path: root/core/pool.go
diff options
context:
space:
mode:
authorsangtran <tranquangsang12.7@gmail.com>2026-09-05 17:06:30 +0700
committersangtran <tranquangsang12.7@gmail.com>2026-09-05 17:06:30 +0700
commite626cee8f7de0dd3ffca4c7297e59a87f790cc02 (patch)
tree1b57f5e3134459872890e3df7484be5cf3cb3ba6 /core/pool.go
parent67be8b5e2b5188d4291ed0a3c3a91b5e40bfbebe (diff)
signatureVerified sangtran <tranquangsang12.7@gmail.com> Key: 8DD79823D235E1BB ultimate trust
downloadflux-e626cee8f7de0dd3ffca4c7297e59a87f790cc02.tar.gz
flux-e626cee8f7de0dd3ffca4c7297e59a87f790cc02.zip
Verified feat: add on pebble state backend and using sync Pool to reuse buffer []byte
Diffstat (limited to 'core/pool.go')
-rw-r--r--core/pool.go38
1 files changed, 38 insertions, 0 deletions
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 @@
1package core
2
3import "sync"
4
5
6const (
7 DefaultBufferSize = 1024
8 MaxBufferSize = 64 * 1024
9)
10
11var bytesPool = sync.Pool{
12 New: func () any {
13 b := make([]byte, DefaultBufferSize)
14 return &b
15 },
16}
17
18func GetBuffer(size int) []byte {
19 bufPtr := bytesPool.Get().(*[]byte)
20
21 buf := *bufPtr
22
23
24 if size > cap(buf) {
25 buf = make([]byte, size)
26 }
27
28 return buf[:size]
29}
30
31
32func PutBuffer(buf []byte) {
33 if cap(buf) < MaxBufferSize{
34 // reset
35 buf = buf[:0]
36 bytesPool.Put(&buf)
37 }
38}