diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2020-01-24 11:16:18 +0000 |
---|---|---|
committer | Henning Baldersheim <balder@yahoo-inc.com> | 2020-01-24 11:16:18 +0000 |
commit | 4f94dad8ae0811bd0da6ff6c05c6e17e5049d5c1 (patch) | |
tree | 81d2877bb404b1e7b75b720e8cb72a8f33fe6068 /searchlib | |
parent | 7de3db5a1548ce595f76a4f817206b0bc663c2e7 (diff) |
Unroll tight loop.
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; |