summaryrefslogtreecommitdiffstats
path: root/searchlib/src
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2024-01-10 11:32:26 +0000
committerHenning Baldersheim <balder@yahoo-inc.com>2024-01-10 11:32:26 +0000
commita40e9a53fca36bce22c1fb1bb2ae69f05f556ab0 (patch)
tree8ba5a602371277da4f5a74b75fe3f6cf0e579ce1 /searchlib/src
parent7788df8ee7b8409b2e2ff15adf4cf454409cd9fd (diff)
Increase alignment for bit vectors 64 => 256 bytes
Diffstat (limited to 'searchlib/src')
-rw-r--r--searchlib/src/vespa/searchlib/common/bitvector.h2
-rw-r--r--searchlib/src/vespa/searchlib/diskindex/bitvectorfile.cpp31
2 files changed, 9 insertions, 24 deletions
diff --git a/searchlib/src/vespa/searchlib/common/bitvector.h b/searchlib/src/vespa/searchlib/common/bitvector.h
index 943db5f06ba..6e5d02f2872 100644
--- a/searchlib/src/vespa/searchlib/common/bitvector.h
+++ b/searchlib/src/vespa/searchlib/common/bitvector.h
@@ -295,7 +295,7 @@ protected:
static Index numWords(Index bits) noexcept { return wordNum(bits + 1 + (WordLen - 1)); }
static Index numBytes(Index bits) noexcept { return numWords(bits) * sizeof(Word); }
size_t numWords() const noexcept { return numWords(size()); }
- static constexpr size_t getAlignment() noexcept { return 0x40u; }
+ static constexpr size_t getAlignment() noexcept { return 0x100u; }
static size_t numActiveBytes(Index start, Index end) noexcept { return numActiveWords(start, end) * sizeof(Word); }
static Alloc allocatePaddedAndAligned(Index sz) {
return allocatePaddedAndAligned(0, sz);
diff --git a/searchlib/src/vespa/searchlib/diskindex/bitvectorfile.cpp b/searchlib/src/vespa/searchlib/diskindex/bitvectorfile.cpp
index e78b740c837..f5fcce845df 100644
--- a/searchlib/src/vespa/searchlib/diskindex/bitvectorfile.cpp
+++ b/searchlib/src/vespa/searchlib/diskindex/bitvectorfile.cpp
@@ -18,8 +18,7 @@ using search::common::FileHeaderContext;
namespace {
void
-readHeader(vespalib::FileHeader &h,
- const vespalib::string &name)
+readHeader(vespalib::FileHeader &h, const vespalib::string &name)
{
Fast_BufferedFile file(32_Ki);
file.ReadOpenExisting(name.c_str());
@@ -35,10 +34,8 @@ BitVectorFileWrite::BitVectorFileWrite(BitVectorKeyScope scope)
{
}
-
BitVectorFileWrite::~BitVectorFileWrite() = default;
-
void
BitVectorFileWrite::open(const vespalib::string &name,
uint32_t docIdLimit,
@@ -65,18 +62,10 @@ BitVectorFileWrite::open(const vespalib::string &name,
makeDatHeader(fileHeaderContext);
}
- int64_t pos;
- size_t bitmapbytes;
-
- bitmapbytes = BitVector::getFileBytes(_docIdLimit);
-
- pos = static_cast<int64_t>(_numKeys) *
- static_cast<int64_t>(bitmapbytes) + _datHeaderLen;
-
- int64_t olddatsize = _datFile->getSize();
- assert(olddatsize >= pos);
- (void) olddatsize;
+ size_t bitmapbytes = BitVector::getFileBytes(_docIdLimit);
+ int64_t pos = static_cast<int64_t>(_numKeys) * static_cast<int64_t>(bitmapbytes) + _datHeaderLen;
+ assert(_datFile->getSize() >= pos);
_datFile->SetSize(pos);
assert(pos == _datFile->getPosition());
@@ -121,14 +110,12 @@ BitVectorFileWrite::updateDatHeader(uint64_t fileBitSize)
void
-BitVectorFileWrite::addWordSingle(uint64_t wordNum,
- const BitVector &bitVector)
+BitVectorFileWrite::addWordSingle(uint64_t wordNum, const BitVector &bitVector)
{
assert(bitVector.size() == _docIdLimit);
bitVector.invalidateCachedCount();
Parent::addWordSingle(wordNum, bitVector.countTrueBits());
- _datFile->WriteBuf(bitVector.getStart(),
- bitVector.getFileBytes());
+ _datFile->WriteBuf(bitVector.getStart(), bitVector.getFileBytes());
}
@@ -153,13 +140,11 @@ BitVectorFileWrite::sync()
void
BitVectorFileWrite::close()
{
- size_t bitmapbytes = BitVector::getFileBytes(_docIdLimit);
-
if (_datFile != nullptr) {
if (_datFile->IsOpened()) {
+ size_t bitmapbytes = BitVector::getFileBytes(_docIdLimit);
uint64_t pos = _datFile->getPosition();
- assert(pos == static_cast<uint64_t>(_numKeys) *
- static_cast<uint64_t>(bitmapbytes) + _datHeaderLen);
+ assert(pos == static_cast<uint64_t>(_numKeys) * static_cast<uint64_t>(bitmapbytes) + _datHeaderLen);
(void) bitmapbytes;
_datFile->alignEndForDirectIO();
updateDatHeader(pos * 8);