summaryrefslogtreecommitdiffstats
path: root/eval
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2022-02-08 20:41:14 +0000
committerHenning Baldersheim <balder@yahoo-inc.com>2022-02-08 20:41:14 +0000
commitadf6b9845376577e3501db88aa6e58b4677dc209 (patch)
treeab63fa2aaa225d68251422caba1d6bd3aa001a68 /eval
parent1ae60f5ffb0500ae6ccd93779a28edef948cc503 (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.h26
-rw-r--r--eval/src/vespa/eval/eval/value_cache/constant_tensor_loader.cpp6
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
+}