summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2017-02-28 23:20:25 +0100
committerHenning Baldersheim <balder@yahoo-inc.com>2017-03-04 00:33:39 +0000
commit196b49438310dd8dc6807cf965aeeb21d62c4267 (patch)
tree8cb78b867e0fcd496b74998b854a00e51c365746
parent329d21e75b4b3e07aef0069e8d0e8551e95a2a27 (diff)
Inline very frequently used get method.
-rw-r--r--searchlib/src/vespa/searchlib/datastore/array_store.h25
-rw-r--r--searchlib/src/vespa/searchlib/datastore/array_store.hpp35
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)
{