diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2022-02-08 20:41:14 +0000 |
---|---|---|
committer | Henning Baldersheim <balder@yahoo-inc.com> | 2022-02-08 20:41:14 +0000 |
commit | adf6b9845376577e3501db88aa6e58b4677dc209 (patch) | |
tree | ab63fa2aaa225d68251422caba1d6bd3aa001a68 /eval | |
parent | 1ae60f5ffb0500ae6ccd93779a28edef948cc503 (diff) |
Use mmap automatically for large vectors.
Deinline constructor as it is expensive.
Diffstat (limited to 'eval')
-rw-r--r-- | eval/src/vespa/eval/eval/array_array_map.h | 26 | ||||
-rw-r--r-- | eval/src/vespa/eval/eval/value_cache/constant_tensor_loader.cpp | 6 |
2 files changed, 18 insertions, 14 deletions
diff --git a/eval/src/vespa/eval/eval/array_array_map.h b/eval/src/vespa/eval/eval/array_array_map.h index 3c070210680..e3601644f3e 100644 --- a/eval/src/vespa/eval/eval/array_array_map.h +++ b/eval/src/vespa/eval/eval/array_array_map.h @@ -4,6 +4,7 @@ #include <vespa/vespalib/util/arrayref.h> #include <vespa/vespalib/stllike/hash_set.h> +#include <vespa/vespalib/stllike/allocator.h> #include <vespa/vespalib/stllike/hash_set.hpp> #include <vector> #include <cassert> @@ -27,8 +28,8 @@ class ArrayArrayMap private: size_t _keys_per_entry; size_t _values_per_entry; - std::vector<K> _keys; - std::vector<V> _values; + std::vector<K, vespalib::allocator_large<K>> _keys; + std::vector<V, vespalib::allocator_large<V>> _values; public: size_t keys_per_entry() const { return _keys_per_entry; } @@ -123,14 +124,9 @@ private: } public: - ArrayArrayMap(size_t keys_per_entry_in, size_t values_per_entry_in, size_t expected_entries) - : _keys_per_entry(keys_per_entry_in), _values_per_entry(values_per_entry_in), _keys(), _values(), - _map(expected_entries * 2, Hash(), Equal(*this)), _hasher() - { - _keys.reserve(_keys_per_entry * expected_entries); - _values.reserve(_values_per_entry * expected_entries); - static_assert(!std::is_pointer_v<K>, "keys cannot be pointers due to auto-deref of alt keys"); - } + ArrayArrayMap(size_t keys_per_entry_in, size_t values_per_entry_in, size_t expected_entries); + ArrayArrayMap(const ArrayArrayMap &) = delete; + ArrayArrayMap & operator = (const ArrayArrayMap &) = delete; ~ArrayArrayMap(); size_t size() const { return _map.size(); } @@ -168,6 +164,16 @@ public: }; template <typename K, typename V, typename H, typename EQ> +ArrayArrayMap<K,V,H,EQ>::ArrayArrayMap(size_t keys_per_entry_in, size_t values_per_entry_in, size_t expected_entries) + : _keys_per_entry(keys_per_entry_in), _values_per_entry(values_per_entry_in), _keys(), _values(), + _map(expected_entries * 2, Hash(), Equal(*this)), _hasher() +{ + _keys.reserve(_keys_per_entry * expected_entries); + _values.reserve(_values_per_entry * expected_entries); + static_assert(!std::is_pointer_v<K>, "keys cannot be pointers due to auto-deref of alt keys"); +} + +template <typename K, typename V, typename H, typename EQ> ArrayArrayMap<K,V,H,EQ>::~ArrayArrayMap() = default; } diff --git a/eval/src/vespa/eval/eval/value_cache/constant_tensor_loader.cpp b/eval/src/vespa/eval/eval/value_cache/constant_tensor_loader.cpp index 9ddbf41f909..d6a7f54a78e 100644 --- a/eval/src/vespa/eval/eval/value_cache/constant_tensor_loader.cpp +++ b/eval/src/vespa/eval/eval/value_cache/constant_tensor_loader.cpp @@ -13,8 +13,7 @@ #include <vespa/log/log.h> LOG_SETUP(".vespalib.eval.value_cache.constant_tensor_loader"); -namespace vespalib { -namespace eval { +namespace vespalib::eval { using Inspector = slime::Inspector; using ObjectTraverser = slime::ObjectTraverser; @@ -110,5 +109,4 @@ ConstantTensorLoader::create(const vespalib::string &path, const vespalib::strin } } -} // namespace vespalib::eval -} // namespace vespalib +} |