From 983775333e9f6b94e9d41d4e35141235fd76f1ec Mon Sep 17 00:00:00 2001 From: Matt Joiner Date: Fri, 1 Aug 2025 15:51:52 +1000 Subject: [PATCH] Avoid Iterator allocation --- piece.go | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/piece.go b/piece.go index 113e9345..c95c2fe4 100644 --- a/piece.go +++ b/piece.go @@ -7,6 +7,7 @@ import ( "iter" "sync" + "github.com/RoaringBitmap/roaring" "github.com/anacrolix/chansync" g "github.com/anacrolix/generics" "github.com/anacrolix/missinggo/v2/bitmap" @@ -157,7 +158,8 @@ func (p *Piece) chunkIndexDirty(chunk chunkIndexType) bool { func (p *Piece) iterCleanChunks() iter.Seq[chunkIndexType] { return func(yield func(chunkIndexType) bool) { - it := p.t.dirtyChunks.Iterator() + var it roaring.IntIterator + it.Initialize(&p.t.dirtyChunks.Bitmap) begin := uint32(p.requestIndexBegin()) end := uint32(p.requestIndexMaxEnd()) it.AdvanceIfNeeded(begin) -- 2.51.0