diff options
Diffstat (limited to 'searchlib/src')
-rw-r--r-- | searchlib/src/vespa/searchlib/common/bitvector.h | 2 | ||||
-rw-r--r-- | searchlib/src/vespa/searchlib/diskindex/bitvectorfile.cpp | 31 |
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); |