Merge pull request #1027 from tgruben/rle-optimize

added binary search to runAdd
This commit is contained in:
tgruben 2017-12-22 13:26:27 -06:00 • committed by GitHub
commit e4f5494db2
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -1216,16 +1216,19 @@ func (c *container) runAdd(v uint16) bool {
c.runs = []interval16{{start: v, last: v}}
return true
}
i := 0
var iv interval16
for i, iv = range c.runs {
if iv.last >= v {
break
}
i := sort.Search(len(c.runs),
func(i int) bool { return c.runs[i].last >= v })
if i == len(c.runs) {
i--
}
iv := c.runs[i]
if v >= iv.start && iv.last >= v {
return false
}
c.unmap()
if iv.last < v {
if iv.last == v-1 {