diff options
| author | sangtran <tranquangsang12.7@gmail.com> | 2026-09-05 17:06:30 +0700 |
|---|---|---|
| committer | sangtran <tranquangsang12.7@gmail.com> | 2026-09-05 17:06:30 +0700 |
| commit | e626cee8f7de0dd3ffca4c7297e59a87f790cc02 (patch) | |
| tree | 1b57f5e3134459872890e3df7484be5cf3cb3ba6 /core/pool.go | |
| parent | 67be8b5e2b5188d4291ed0a3c3a91b5e40bfbebe (diff) | |
| signature | Verified sangtran <tranquangsang12.7@gmail.com> Key: 8DD79823D235E1BB ultimate trust | |
| download | flux-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.go | 38 |
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 @@ | |||
| 1 | package core | ||
| 2 | |||
| 3 | import "sync" | ||
| 4 | |||
| 5 | |||
| 6 | const ( | ||
| 7 | DefaultBufferSize = 1024 | ||
| 8 | MaxBufferSize = 64 * 1024 | ||
| 9 | ) | ||
| 10 | |||
| 11 | var bytesPool = sync.Pool{ | ||
| 12 | New: func () any { | ||
| 13 | b := make([]byte, DefaultBufferSize) | ||
| 14 | return &b | ||
| 15 | }, | ||
| 16 | } | ||
| 17 | |||
| 18 | func 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 | |||
| 32 | func PutBuffer(buf []byte) { | ||
| 33 | if cap(buf) < MaxBufferSize{ | ||
| 34 | // reset | ||
| 35 | buf = buf[:0] | ||
| 36 | bytesPool.Put(&buf) | ||
| 37 | } | ||
| 38 | } | ||
