Update test, cleanup

This commit is contained in:
Alan Bernstein 2017-06-15 14:50:27 -05:00 committed by Matt Jaffee
parent b33bf230c3
commit bfce3a0746
2 changed files with 9 additions and 4 deletions

View file

@ -1518,7 +1518,7 @@ func (c *container) runToBitmap() {
}
for _, r := range c.runs {
// TODO is there a faster way ?!?!!
// TODO this can be ~64x faster for long runs by setting maxBitmap instead of single bits
for v := r.start; v <= r.last; v++ {
c.bitmap[int(v)/64] |= (uint64(1) << uint(v%64))
}
@ -1564,10 +1564,9 @@ func (c *container) bitmapToRun() {
current = c.bitmap[i]
}
last = 0
if current == maxBitmap {
last = 64*i + 64 // TODO verify
c.runs = append(c.runs, interval32{start, last - 1})
// bitmap[1023] == maxBitmap
c.runs = append(c.runs, interval32{start, 65535})
break
}
currentLast := uint32(trailingZeroN(^current))

View file

@ -895,7 +895,13 @@ func TestBitmapToRun(t *testing.T) {
bitmap: []uint64{0xF000000000000000, 0xFFFFFFFFFFFFFFFF, 0xF},
exp: []interval32{{start: 60, last: 131}},
},
{
bitmap: make([]uint64, bitmapN),
exp: []interval32{{start: 65408, last: 65535}},
},
}
tests[8].bitmap[1022] = 0xFFFFFFFFFFFFFFFF
tests[8].bitmap[1023] = 0xFFFFFFFFFFFFFFFF
for i, test := range tests {
a.bitmap = make([]uint64, bitmapN)