From: Matt Joiner Date: Fri, 1 Aug 2025 05:51:52 +0000 (+1000) Subject: Avoid Iterator allocation X-Git-Tag: v1.59.0~2^2~74 X-Git-Url: http://www.git.stargrave.org/?a=commitdiff_plain;h=983775333e9f6b94e9d41d4e35141235fd76f1ec;p=btrtrc.git Avoid Iterator allocation --- 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)