diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2017-02-28 23:20:25 +0100 |
---|---|---|
committer | Henning Baldersheim <balder@yahoo-inc.com> | 2017-03-04 00:33:39 +0000 |
commit | 196b49438310dd8dc6807cf965aeeb21d62c4267 (patch) | |
tree | 8cb78b867e0fcd496b74998b854a00e51c365746 | |
parent | 329d21e75b4b3e07aef0069e8d0e8551e95a2a27 (diff) |
Inline very frequently used get method.
-rw-r--r-- | searchlib/src/vespa/searchlib/datastore/array_store.h | 25 | ||||
-rw-r--r-- | searchlib/src/vespa/searchlib/datastore/array_store.hpp | 35 |
2 files changed, 22 insertions, 38 deletions
diff --git a/searchlib/src/vespa/searchlib/datastore/array_store.h b/searchlib/src/vespa/searchlib/datastore/array_store.h index ab7f5689ce3..038ccdd01e9 100644 --- a/searchlib/src/vespa/searchlib/datastore/array_store.h +++ b/searchlib/src/vespa/searchlib/datastore/array_store.h @@ -57,14 +57,33 @@ private: size_t getArraySize(uint32_t typeId) const { return typeId; } EntryRef addSmallArray(const ConstArrayRef &array); EntryRef addLargeArray(const ConstArrayRef &array); - ConstArrayRef getSmallArray(RefT ref, size_t arraySize) const; - ConstArrayRef getLargeArray(RefT ref) const; + ConstArrayRef getSmallArray(RefT ref, size_t arraySize) const { + size_t bufferOffset = ref.offset() * arraySize; + const EntryT *buf = _store.template getBufferEntry<EntryT>(ref.bufferId(), bufferOffset); + return ConstArrayRef(buf, arraySize); + } + ConstArrayRef getLargeArray(RefT ref) const { + const LargeArray *buf = _store.template getBufferEntry<LargeArray>(ref.bufferId(), ref.offset()); + return ConstArrayRef(&(*buf)[0], buf->size()); + } public: ArrayStore(const ArrayStoreConfig &cfg); ~ArrayStore(); EntryRef add(const ConstArrayRef &array); - ConstArrayRef get(EntryRef ref) const; + ConstArrayRef get(EntryRef ref) const { + if (!ref.valid()) { + return ConstArrayRef(); + } + RefT internalRef(ref); + uint32_t typeId = _store.getTypeId(internalRef.bufferId()); + if (typeId != _largeArrayTypeId) { + size_t arraySize = getArraySize(typeId); + return getSmallArray(internalRef, arraySize); + } else { + return getLargeArray(internalRef); + } + } void remove(EntryRef ref); ICompactionContext::UP compactWorst(bool compactMemory, bool compactAddressSpace); MemoryUsage getMemoryUsage() const { return _store.getMemoryUsage(); } diff --git a/searchlib/src/vespa/searchlib/datastore/array_store.hpp b/searchlib/src/vespa/searchlib/datastore/array_store.hpp index bfafc91352f..8d7df1ddd68 100644 --- a/searchlib/src/vespa/searchlib/datastore/array_store.hpp +++ b/searchlib/src/vespa/searchlib/datastore/array_store.hpp @@ -101,41 +101,6 @@ ArrayStore<EntryT, RefT>::addLargeArray(const ConstArrayRef &array) } template <typename EntryT, typename RefT> -typename ArrayStore<EntryT, RefT>::ConstArrayRef -ArrayStore<EntryT, RefT>::get(EntryRef ref) const -{ - if (!ref.valid()) { - return ConstArrayRef(); - } - RefT internalRef(ref); - uint32_t typeId = _store.getTypeId(internalRef.bufferId()); - if (typeId != _largeArrayTypeId) { - size_t arraySize = getArraySize(typeId); - return getSmallArray(internalRef, arraySize); - } else { - return getLargeArray(internalRef); - } -} - -template <typename EntryT, typename RefT> -typename ArrayStore<EntryT, RefT>::ConstArrayRef -ArrayStore<EntryT, RefT>::getSmallArray(RefT ref, size_t arraySize) const -{ - size_t bufferOffset = ref.offset() * arraySize; - const EntryT *buf = _store.template getBufferEntry<EntryT>(ref.bufferId(), bufferOffset); - return ConstArrayRef(buf, arraySize); -} - -template <typename EntryT, typename RefT> -typename ArrayStore<EntryT, RefT>::ConstArrayRef -ArrayStore<EntryT, RefT>::getLargeArray(RefT ref) const -{ - const LargeArray *buf = _store.template getBufferEntry<LargeArray>(ref.bufferId(), ref.offset()); - assert(buf->size() > 0); - return ConstArrayRef(&(*buf)[0], buf->size()); -} - -template <typename EntryT, typename RefT> void ArrayStore<EntryT, RefT>::remove(EntryRef ref) { |