From efc2c9ff4438a84402c5631b9de961b9f62440db Mon Sep 17 00:00:00 2001 From: merlin Date: Tue, 1 Oct 2024 12:53:07 +0300 Subject: [PATCH] buf pool --- internal/sanitize/sanitize.go | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/internal/sanitize/sanitize.go b/internal/sanitize/sanitize.go index df58c448..4a069658 100644 --- a/internal/sanitize/sanitize.go +++ b/internal/sanitize/sanitize.go @@ -6,6 +6,7 @@ import ( "fmt" "strconv" "strings" + "sync" "time" "unicode/utf8" ) @@ -24,9 +25,26 @@ type Query struct { // https://github.com/jackc/pgx/issues/1380 const replacementcharacterwidth = 3 +var bufPool = &sync.Pool{} + +func getBuf() *bytes.Buffer { + buf, _ := bufPool.Get().(*bytes.Buffer) + if buf == nil { + buf = &bytes.Buffer{} + } + + return buf +} + +func putBuf(buf *bytes.Buffer) { + buf.Reset() + bufPool.Put(buf) +} + func (q *Query) Sanitize(args ...any) (string, error) { argUse := make([]bool, len(args)) - buf := &bytes.Buffer{} + buf := getBuf() + defer putBuf(buf) for _, part := range q.Parts { var str string