From 621e22d26ca3efbdef27ec159c841a9c1dc3325d Mon Sep 17 00:00:00 2001 From: Todd Gruben Date: Fri, 25 May 2018 14:24:46 -0500 Subject: [PATCH] simplified bitmap max function --- roaring/roaring.go | 18 +++++------------- 1 file changed, 5 insertions(+), 13 deletions(-) diff --git a/roaring/roaring.go b/roaring/roaring.go index cc8466a5f..fafce4d59 100644 --- a/roaring/roaring.go +++ b/roaring/roaring.go @@ -1461,22 +1461,14 @@ func (c *Container) arrayMax() uint16 { func (c *Container) bitmapMax() uint16 { // Search bitmap in reverse order. - for i := len(c.bitmap) - 1; i >= 0; i-- { + for i := len(c.bitmap); i > 0; i-- { // If value is zero then skip. - v := c.bitmap[i] - if v == 0 { - continue + v := c.bitmap[i-1] + if v != 0 { + r := bits.LeadingZeros64(v) + return uint16((i-1)*64 + 63 - r) } - // Find the highest set bit. - for j := uint16(63); ; j-- { - if v&(1<