]> Sergey Matveev's repositories - btrtrc.git/commitdiff
Avoid Iterator allocation
authorMatt Joiner <anacrolix@gmail.com>
Fri, 1 Aug 2025 05:51:52 +0000 (15:51 +1000)
committerMatt Joiner <anacrolix@gmail.com>
Fri, 1 Aug 2025 05:51:52 +0000 (15:51 +1000)
piece.go

index 113e934568d8eba9f7b3cb1fb377b7e4bbc2a03a..c95c2fe4a877f0206c2b317a15ef31ba25ceeacf 100644 (file)
--- 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)