From 2a0b850e93cb8d228e9017ab23a0bfc231865b30 Mon Sep 17 00:00:00 2001 From: Henning Baldersheim Date: Thu, 14 Dec 2023 20:32:29 +0000 Subject: Deinline the coldest path too. --- .../vespa/searchlib/queryeval/multibitvectoriterator.cpp | 14 +++++++++++--- .../src/vespa/searchlib/queryeval/multibitvectoriterator.h | 2 ++ 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/searchlib/src/vespa/searchlib/queryeval/multibitvectoriterator.cpp b/searchlib/src/vespa/searchlib/queryeval/multibitvectoriterator.cpp index 331f01d4a82..b13bf4a10e2 100644 --- a/searchlib/src/vespa/searchlib/queryeval/multibitvectoriterator.cpp +++ b/searchlib/src/vespa/searchlib/queryeval/multibitvectoriterator.cpp @@ -70,15 +70,23 @@ MultiBitVector::updateLastValueCold(uint32_t docId) noexcept } const uint32_t index(BitWord::wordNum(docId)); if (docId >= _lastMaxDocIdLimitRequireFetch) { - uint32_t baseIndex = index & ~(NumWordsInBatch - 1); - _update(_accel, baseIndex*sizeof(Word), _bvs, _lastWords); - _lastMaxDocIdLimitRequireFetch = (baseIndex + NumWordsInBatch) * BitWord::WordLen; + fetchChunk(index); } _lastValue = _lastWords[index % NumWordsInBatch]; _lastMaxDocIdLimit = (index + 1) * BitWord::WordLen; return false; } +template +void +MultiBitVector::fetchChunk(uint32_t index) noexcept +{ + uint32_t baseIndex = index & ~(NumWordsInBatch - 1); + _update(_accel, baseIndex*sizeof(Word), _bvs, _lastWords); + _lastMaxDocIdLimitRequireFetch = (baseIndex + NumWordsInBatch) * BitWord::WordLen; +} + + template diff --git a/searchlib/src/vespa/searchlib/queryeval/multibitvectoriterator.h b/searchlib/src/vespa/searchlib/queryeval/multibitvectoriterator.h index 66598e28e3e..0d9e2c4f25f 100644 --- a/searchlib/src/vespa/searchlib/queryeval/multibitvectoriterator.h +++ b/searchlib/src/vespa/searchlib/queryeval/multibitvectoriterator.h @@ -44,6 +44,8 @@ private: return false; } VESPA_DLL_LOCAL bool updateLastValueCold(uint32_t docId) noexcept __attribute__((noinline)); + VESPA_DLL_LOCAL void fetchChunk(uint32_t docId) noexcept __attribute__((noinline)); + using IAccelrated = vespalib::hwaccelrated::IAccelrated; Update _update; -- cgit v1.2.3