summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2020-03-20 16:51:16 +0100
committerGitHub <noreply@github.com>2020-03-20 16:51:16 +0100
commit08ef563613dd267cde78882b3caceaad5f69507d (patch)
treee23ef265acc84a4b256b446731fc1d07c7cc0749
parentfc8d9ab3a254d031dd3a21f63e171abfd5955ab8 (diff)
parentc28ba15ab3cc9d08e748ddbbbb4e0f0ddd9652e3 (diff)
Merge pull request #12646 from vespa-engine/balder/make-default-hashing-use-2N-and-instead-of-prime-mod
Since the most important aspect our use of hash maps/sets is for speeā€¦
-rw-r--r--documentapi/test/crosslanguagefiles/6.221-cpp-CreateVisitorMessage.datbin193 -> 193 bytes
-rw-r--r--searchcore/src/tests/proton/docsummary/docsummary.cpp4
-rw-r--r--searchcore/src/tests/proton/documentdb/document_subdbs/document_subdbs_test.cpp14
-rw-r--r--searchlib/src/tests/predicate/document_features_store_test.cpp4
-rw-r--r--staging_vespalib/src/vespa/vespalib/stllike/lrucache_map.h38
-rw-r--r--staging_vespalib/src/vespa/vespalib/stllike/lrucache_map.hpp2
-rw-r--r--vespalib/src/vespa/vespalib/stllike/hash_map.h2
-rw-r--r--vespalib/src/vespa/vespalib/stllike/hash_set.h2
-rw-r--r--vespalib/src/vespa/vespalib/stllike/hash_set.hpp4
9 files changed, 35 insertions, 35 deletions
diff --git a/documentapi/test/crosslanguagefiles/6.221-cpp-CreateVisitorMessage.dat b/documentapi/test/crosslanguagefiles/6.221-cpp-CreateVisitorMessage.dat
index 27e64170701..a7bb5b0e896 100644
--- a/documentapi/test/crosslanguagefiles/6.221-cpp-CreateVisitorMessage.dat
+++ b/documentapi/test/crosslanguagefiles/6.221-cpp-CreateVisitorMessage.dat
Binary files differ
diff --git a/searchcore/src/tests/proton/docsummary/docsummary.cpp b/searchcore/src/tests/proton/docsummary/docsummary.cpp
index c15fd2ccfc1..3c3ff863345 100644
--- a/searchcore/src/tests/proton/docsummary/docsummary.cpp
+++ b/searchcore/src/tests/proton/docsummary/docsummary.cpp
@@ -774,8 +774,8 @@ Test::requireThatAttributesAreUsed()
"bd:[20,30],"
"be:[20.2,30.3],"
"bf:['bar','baz'],"
- "bg:[{item:50,weight:3},{item:40,weight:2}],"
- "bh:[{item:40.4,weight:4},{item:50.5,weight:5}],"
+ "bg:[document_sub{item:40,weight:2},{item:50,weight:3}],"
+ "bh:[{item:50.5,weight:5},{item:40.4,weight:4}],"
"bi:[{item:'quux',weight:7},{item:'qux',weight:6}],"
"bj:'0x01020178017901016601674008000000000000'}", *rep, 0, true));
TEST_DO(assertTensor(make_tensor(TensorSpec("tensor(x{},y{})")
diff --git a/searchcore/src/tests/proton/documentdb/document_subdbs/document_subdbs_test.cpp b/searchcore/src/tests/proton/documentdb/document_subdbs/document_subdbs_test.cpp
index 7139eb0d82d..11054566985 100644
--- a/searchcore/src/tests/proton/documentdb/document_subdbs/document_subdbs_test.cpp
+++ b/searchcore/src/tests/proton/documentdb/document_subdbs/document_subdbs_test.cpp
@@ -447,8 +447,8 @@ void
assertAttributes2(const AttributeGuardList &attributes)
{
EXPECT_EQUAL(2u, attributes.size());
- EXPECT_EQUAL("attr1", attributes[0]->getName());
- EXPECT_EQUAL("attr2", attributes[1]->getName());
+ EXPECT_EQUAL("attr2", attributes[0]->getName());
+ EXPECT_EQUAL("attr1", attributes[1]->getName());
}
void
@@ -544,7 +544,7 @@ requireThatAttributeManagerCanBeReconfigured(Fixture &f)
f.basicReconfig(10);
std::vector<AttributeGuard> attributes;
f.getAttributeManager()->getAttributeList(attributes);
- assertAttributes2(attributes);
+ TEST_DO(assertAttributes2(attributes));
}
TEST_F("require that attribute manager can be reconfigured", FastAccessFixture)
@@ -791,13 +791,13 @@ assertAttribute(const AttributeGuard &attr, const vespalib::string &name, uint32
void
assertAttribute1(const AttributeGuard &attr, SerialNum createSerialNum, SerialNum lastSerialNum)
{
- assertAttribute(attr, "attr1", 3, 22, 44, createSerialNum, lastSerialNum);
+ TEST_DO(assertAttribute(attr, "attr1", 3, 22, 44, createSerialNum, lastSerialNum));
}
void
assertAttribute2(const AttributeGuard &attr, SerialNum createSerialNum, SerialNum lastSerialNum)
{
- assertAttribute(attr, "attr2", 3, 33, 55, createSerialNum, lastSerialNum);
+ TEST_DO(assertAttribute(attr, "attr2", 3, 33, 55, createSerialNum, lastSerialNum));
}
TEST_F("require that fast-access attributes are populated during feed", FastAccessOnlyFixture)
@@ -833,8 +833,8 @@ requireThatAttributesArePopulatedDuringReprocessing(FixtureType &f)
std::vector<AttributeGuard> attrs;
f.getAttributeManager()->getAttributeList(attrs);
EXPECT_EQUAL(2u, attrs.size());
- assertAttribute1(attrs[0], CFG_SERIAL, 40);
- assertAttribute2(attrs[1], 40, 40);
+ TEST_DO(assertAttribute1(attrs[1], CFG_SERIAL, 40));
+ TEST_DO(assertAttribute2(attrs[0], 40, 40));
}
}
diff --git a/searchlib/src/tests/predicate/document_features_store_test.cpp b/searchlib/src/tests/predicate/document_features_store_test.cpp
index d817b1668ff..72f83e533c9 100644
--- a/searchlib/src/tests/predicate/document_features_store_test.cpp
+++ b/searchlib/src/tests/predicate/document_features_store_test.cpp
@@ -208,9 +208,9 @@ TEST("require that serialization cleans up wordstore") {
EXPECT_EQUAL(460u, features_store.getMemoryUsage().usedBytes());
annotations.range_features.push_back({"bar", 100, 199});
features_store.insert(annotations, doc_id + 1);
- EXPECT_EQUAL(800u, features_store.getMemoryUsage().usedBytes());
+ EXPECT_EQUAL(848u, features_store.getMemoryUsage().usedBytes());
features_store.remove(doc_id + 1);
- EXPECT_EQUAL(752u, features_store.getMemoryUsage().usedBytes());
+ EXPECT_EQUAL(800u, features_store.getMemoryUsage().usedBytes());
vespalib::DataBuffer buffer;
features_store.serialize(buffer);
diff --git a/staging_vespalib/src/vespa/vespalib/stllike/lrucache_map.h b/staging_vespalib/src/vespa/vespalib/stllike/lrucache_map.h
index 07137263cf6..777230566f2 100644
--- a/staging_vespalib/src/vespa/vespalib/stllike/lrucache_map.h
+++ b/staging_vespalib/src/vespa/vespalib/stllike/lrucache_map.h
@@ -28,32 +28,32 @@ struct LinkedValue : public LinkedValueBase
template<typename K, typename V, typename H = vespalib::hash<K>, typename EQ = std::equal_to<K> >
struct LruParam
{
- typedef LinkedValue<V> LV;
- typedef std::pair< K, LV > value_type;
- typedef vespalib::Select1st< value_type > select_key;
- typedef K Key;
- typedef V Value;
- typedef H Hash;
- typedef EQ Equal;
- typedef hashtable< Key, value_type, Hash, Equal, select_key > HashTable;
+ using LV = LinkedValue<V>;
+ using value_type = std::pair< K, LV >;
+ using select_key = vespalib::Select1st< value_type >;
+ using Key = K;
+ using Value = V;
+ using Hash = H;
+ using Equal = EQ;
+ using HashTable = hashtable< Key, value_type, Hash, Equal, select_key >;
};
template< typename P >
class lrucache_map : private P::HashTable
{
private:
- typedef typename P::HashTable HashTable;
- typedef typename P::Value V;
- typedef typename P::Key K;
- typedef typename P::value_type value_type;
- typedef typename P::LV LV;
- typedef typename HashTable::iterator internal_iterator;
- typedef typename HashTable::next_t next_t;
- typedef typename HashTable::NodeStore NodeStore;
+ using HashTable = typename P::HashTable;
+ using V = typename P::Value;
+ using K = typename P::Key;
+ using value_type = typename P::value_type;
+ using LV = typename P::LV;
+ using internal_iterator = typename HashTable::iterator;
+ using next_t = typename HashTable::next_t;
+ using NodeStore = typename HashTable::NodeStore;
protected:
static constexpr size_t UNLIMITED = std::numeric_limits<size_t>::max();
public:
- typedef typename HashTable::insert_result insert_result;
+ using insert_result = typename HashTable::insert_result;
class iterator {
public:
@@ -177,8 +177,8 @@ public:
void swap(lrucache_map & rhs);
private:
- typedef std::pair<uint32_t, uint32_t> MoveRecord;
- typedef std::vector<MoveRecord> MoveRecords;
+ using MoveRecord = std::pair<uint32_t, uint32_t>;
+ using MoveRecords = std::vector<MoveRecord>;
/**
* Implements the resize of the hashtable
*/
diff --git a/staging_vespalib/src/vespa/vespalib/stllike/lrucache_map.hpp b/staging_vespalib/src/vespa/vespalib/stllike/lrucache_map.hpp
index 61147229497..d8d55c9b8c4 100644
--- a/staging_vespalib/src/vespa/vespalib/stllike/lrucache_map.hpp
+++ b/staging_vespalib/src/vespa/vespalib/stllike/lrucache_map.hpp
@@ -74,7 +74,7 @@ lrucache_map<P>::lrucache_map(size_t maxElems) :
{ }
template< typename P >
-lrucache_map<P>::~lrucache_map() { }
+lrucache_map<P>::~lrucache_map() = default;
template< typename P >
void
diff --git a/vespalib/src/vespa/vespalib/stllike/hash_map.h b/vespalib/src/vespa/vespalib/stllike/hash_map.h
index 3dc5de65285..29a5ef01a9f 100644
--- a/vespalib/src/vespa/vespalib/stllike/hash_map.h
+++ b/vespalib/src/vespa/vespalib/stllike/hash_map.h
@@ -7,7 +7,7 @@
namespace vespalib {
-template< typename K, typename V, typename H = vespalib::hash<K>, typename EQ = std::equal_to<>, typename M=hashtable_base::prime_modulator >
+template< typename K, typename V, typename H = vespalib::hash<K>, typename EQ = std::equal_to<>, typename M=hashtable_base::and_modulator >
class hash_map
{
public:
diff --git a/vespalib/src/vespa/vespalib/stllike/hash_set.h b/vespalib/src/vespa/vespalib/stllike/hash_set.h
index 08288086bf3..0c3f2dcb220 100644
--- a/vespalib/src/vespa/vespalib/stllike/hash_set.h
+++ b/vespalib/src/vespa/vespalib/stllike/hash_set.h
@@ -8,7 +8,7 @@
namespace vespalib {
-template< typename K, typename H = vespalib::hash<K>, typename EQ = std::equal_to<>, typename M=hashtable_base::prime_modulator>
+template< typename K, typename H = vespalib::hash<K>, typename EQ = std::equal_to<>, typename M=hashtable_base::and_modulator>
class hash_set
{
private:
diff --git a/vespalib/src/vespa/vespalib/stllike/hash_set.hpp b/vespalib/src/vespa/vespalib/stllike/hash_set.hpp
index 19114798806..3e48e62f2c7 100644
--- a/vespalib/src/vespa/vespalib/stllike/hash_set.hpp
+++ b/vespalib/src/vespa/vespalib/stllike/hash_set.hpp
@@ -85,11 +85,11 @@ hash_set<K, H, EQ, M>::insert(K &&value) {
#define VESPALIB_HASH_SET_INSTANTIATE(K) \
template class vespalib::hash_set<K>; \
- template class vespalib::hashtable<K, K, vespalib::hash<K>, std::equal_to<>, vespalib::Identity>; \
+ template class vespalib::hashtable<K, K, vespalib::hash<K>, std::equal_to<>, vespalib::Identity, vespalib::hashtable_base::and_modulator>; \
template class vespalib::Array<vespalib::hash_node<K>>;
#define VESPALIB_HASH_SET_INSTANTIATE_H(K, H) \
template class vespalib::hash_set<K, H>; \
- template class vespalib::hashtable<K, K, H, std::equal_to<>, vespalib::Identity>; \
+ template class vespalib::hashtable<K, K, H, std::equal_to<>, vespalib::Identity, vespalib::hashtable_base::and_modulator>; \
template class vespalib::Array<vespalib::hash_node<K>>;