Kaynağa Gözat

refactor(scanner): use recommended pattern for slice pool (#10225)

### Purpose

Uses recommended pattern for slice pools to avoid copying the slice
struct, suggested by the linter and actually used in the go stdlib, for
example in `net/http/h2_bundle.go`.
Daniil Gentili 6 ay önce
ebeveyn
işleme
d37cb02e40
1 değiştirilmiş dosya ile 5 ekleme ve 3 silme
  1. 5 3
      lib/scanner/blocks.go

+ 5 - 3
lib/scanner/blocks.go

@@ -23,9 +23,11 @@ type Counter interface {
 	Update(bytes int64)
 }
 
+const bufSize = 32 << 10 // 32k
+
 var bufPool = sync.Pool{
 	New: func() any {
-		return make([]byte, 32<<10) // 32k buffer
+		return new([bufSize]byte) // 32k buffer
 	},
 }
 
@@ -61,7 +63,7 @@ func Blocks(ctx context.Context, r io.Reader, blocksize int, sizehint int64, cou
 	}
 
 	// A 32k buffer is used for copying into the hash function.
-	buf := bufPool.Get().([]byte) //nolint:forcetypeassert
+	buf := bufPool.Get().(*[bufSize]byte)[:] //nolint:forcetypeassert
 
 	var offset int64
 	lr := io.LimitReader(r, int64(blocksize)).(*io.LimitedReader)
@@ -100,7 +102,7 @@ func Blocks(ctx context.Context, r io.Reader, blocksize int, sizehint int64, cou
 
 		hf.Reset()
 	}
-	bufPool.Put(buf)
+	bufPool.Put((*[bufSize]byte)(buf))
 	hf.Reset()
 	hashPool.Put(hf)