From bdf68ec694b89e12b328b176df6616064760ff35 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=BA=90=E6=96=87=E9=9B=A8?= <41315874+fumiama@users.noreply.github.com> Date: Mon, 30 May 2022 14:19:54 +0800 Subject: [PATCH] feat: use the same buffer pool as MiraiGo (#1297) --- global/buffer.go | 18 ++++-------------- 1 file changed, 4 insertions(+), 14 deletions(-) diff --git a/global/buffer.go b/global/buffer.go index 73079f3..e899dae 100644 --- a/global/buffer.go +++ b/global/buffer.go @@ -2,26 +2,16 @@ package global import ( "bytes" - "sync" -) -var bufferPool = sync.Pool{ - New: func() interface{} { - return new(bytes.Buffer) - }, -} + "github.com/Mrs4s/MiraiGo/binary" // 和 MiraiGo 共用同一 buffer 池 +) // NewBuffer 从池中获取新 bytes.Buffer func NewBuffer() *bytes.Buffer { - return bufferPool.Get().(*bytes.Buffer) + return (*bytes.Buffer)(binary.SelectWriter()) } // PutBuffer 将 Buffer放入池中 func PutBuffer(buf *bytes.Buffer) { - // See https://golang.org/issue/23199 - const maxSize = 1 << 16 - if buf != nil && buf.Cap() < maxSize { // 对于大Buffer直接丢弃 - buf.Reset() - bufferPool.Put(buf) - } + binary.PutWriter((*binary.Writer)(buf)) }