From a6b62ce10a102345aba2de3fbc6ce4cd5d6b91d1 Mon Sep 17 00:00:00 2001 From: Runxi Yu Date: Sun, 14 Jun 2026 02:26:56 +0000 Subject: object/store/packed: Add a delta header pool --- object/store/packed/delta.go | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) (limited to 'object') diff --git a/object/store/packed/delta.go b/object/store/packed/delta.go index c8fe8f75..5b538221 100644 --- a/object/store/packed/delta.go +++ b/object/store/packed/delta.go @@ -10,8 +10,14 @@ import ( "lindenii.org/go/furgit/internal/format/packfile" "lindenii.org/go/furgit/internal/format/packfile/delta" "lindenii.org/go/lgo/intconv" + "lindenii.org/go/lgo/sync" ) +//nolint:gochecknoglobals +var deltaHeaderPool = sync.NewPool(func() *[delta.MaxHeaderSizesLen]byte { + return new([delta.MaxHeaderSizesLen]byte) +}) + // deltaNode is a delta entry on a resolution chain. type deltaNode struct { // payload is the entry's compressed delta payload view. @@ -214,9 +220,12 @@ func deltaResultSize(payload []byte, deltaSize uint64) (int, error) { defer func() { _ = zr.Close() }() + buf := deltaHeaderPool.Get() + defer deltaHeaderPool.Put(buf) + prefixLen := min(uint64(delta.MaxHeaderSizesLen), deltaSize) - prefix := make([]byte, prefixLen) + prefix := buf[:prefixLen] _, err = io.ReadFull(zr, prefix) if err != nil { -- cgit v1.3.1-10-gc9f91