From 4f94dad8ae0811bd0da6ff6c05c6e17e5049d5c1 Mon Sep 17 00:00:00 2001 From: Henning Baldersheim Date: Fri, 24 Jan 2020 11:16:18 +0000 Subject: Unroll tight loop. --- searchlib/src/vespa/searchlib/common/bitvector.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) (limited to 'searchlib') 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; -- cgit v1.2.3