From 0cd96ef47ec0102f8da063ef4ae1fe57680d6378 Mon Sep 17 00:00:00 2001 From: Gorbunov Kirill Andreevich Date: Mon, 11 Mar 2024 12:09:14 +0300 Subject: [PATCH] add pool for buf #153 --- handler/meter/meter.go | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/handler/meter/meter.go b/handler/meter/meter.go index b91f777..e9882e3 100644 --- a/handler/meter/meter.go +++ b/handler/meter/meter.go @@ -27,6 +27,12 @@ var gzipPool = sync.Pool{ }, } +var bufPool = sync.Pool{ + New: func() interface{} { + return bytes.NewBuffer(nil) + }, +} + // guard to fail early var _ MeterServiceServer = (*Handler)(nil) @@ -78,7 +84,11 @@ func (h *Handler) Metrics(ctx context.Context, req *codecpb.Frame, rsp *codecpb. if !ok { log = logger.DefaultLogger() } - buf := bytes.NewBuffer(nil) + + buf := bufPool.Get().(*bytes.Buffer) + defer bufPool.Put(buf) + buf.Reset() + w := io.Writer(buf) if md, ok := metadata.FromContext(ctx); gzipAccepted(md) && ok { @@ -97,7 +107,7 @@ func (h *Handler) Metrics(ctx context.Context, req *codecpb.Frame, rsp *codecpb. return nil } - rsp.Data = buf.Bytes() + w.Write(rsp.Data) return nil }