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)) }