diff options
Diffstat (limited to 'searchlib')
-rw-r--r-- | searchlib/src/vespa/searchlib/common/bitvector.cpp | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/searchlib/src/vespa/searchlib/common/bitvector.cpp b/searchlib/src/vespa/searchlib/common/bitvector.cpp index 7296842f2c1..bd6e677f8d4 100644 --- a/searchlib/src/vespa/searchlib/common/bitvector.cpp +++ b/searchlib/src/vespa/searchlib/common/bitvector.cpp @@ -139,7 +139,14 @@ BitVector::Index BitVector::internalCount(const Word *tarr, size_t sz) { Index count(0); - for (size_t i(0); i < sz; i++) { + size_t i(0); + for (; (i + 3) < sz; i += 4) { + count += Optimized::popCount(tarr[i + 0]) + + Optimized::popCount(tarr[i + 1]) + + Optimized::popCount(tarr[i + 2]) + + Optimized::popCount(tarr[i + 3]); + } + for (; i < sz; i++) { count += Optimized::popCount(tarr[i]); } return count; |