diff --git a/strmangle/buf_pool.go b/strmangle/buf_pool.go new file mode 100644 index 0000000..750568c --- /dev/null +++ b/strmangle/buf_pool.go @@ -0,0 +1,27 @@ +package strmangle + +import ( + "bytes" + "sync" +) + +var bufPool = sync.Pool{ + New: newBuffer, +} + +func newBuffer() interface{} { + return &bytes.Buffer{} +} + +// GetBuffer retrieves a buffer from the buffer pool +func GetBuffer() *bytes.Buffer { + buf := bufPool.Get().(*bytes.Buffer) + buf.Reset() + + return buf +} + +// PutBuffer back into the buffer pool +func PutBuffer(buf *bytes.Buffer) { + bufPool.Put(buf) +}