update test program to randomize keys after vector resize.

This commit is contained in:
greg
2020-07-26 21:59:42 -04:00
parent 2fdf7f0787
commit 0fe48402ec
+17 -13
View File
@@ -57,10 +57,12 @@ public:
} }
}; };
using Perturb = std::function<void (std::vector<uint64_t> &)>;
// -------------------------------------------------------------------------- // --------------------------------------------------------------------------
// -------------------------------------------------------------------------- // --------------------------------------------------------------------------
template<class Set, size_t N> template<class Set, size_t N>
void test(const char *name, std::function<void (std::vector<uint64_t> &)> perturb) void test(const char *name, Perturb perturb1, Perturb perturb2)
{ {
Set s; Set s;
@@ -70,11 +72,13 @@ void test(const char *name, std::function<void (std::vector<uint64_t> &)> pertur
for (uint32_t i=0; i<N; ++i) for (uint32_t i=0; i<N; ++i)
s.insert(rsu.next()); s.insert(rsu.next());
std::vector<uint64_t> order(s.begin(), s.end()); std::vector<uint64_t> order(s.begin(), s.end()); // contains sorted, randomly generated keys
perturb(order);
order.resize(N/4);
Timer t(name); perturb1(order);
order.resize(N/4);
perturb2(order);
Timer t(name); // start timer
Set c(order.begin(), order.end()); Set c(order.begin(), order.end());
} }
@@ -100,21 +104,21 @@ int main()
constexpr uint32_t num_keys = 10000000; constexpr uint32_t num_keys = 10000000;
using T = uint64_t; using T = uint64_t;
test<phmap::flat_hash_set<T>, num_keys>("flat_hash_set ordered ", noop); test<phmap::flat_hash_set<T>, num_keys>("flat_hash_set ordered ", noop, shuffle);
test<phmap::flat_hash_set<T>, num_keys>("flat_hash_set shuffled", shuffle); test<phmap::flat_hash_set<T>, num_keys>("flat_hash_set shuffled", shuffle, shuffle);
test<pset<T, 4>, num_keys>("parallel (16) ordered ", noop); test<pset<T, 4>, num_keys>("parallel (16) ordered ", noop, shuffle);
test<pset<T, 4>, num_keys>("parallel (16) shuffled", shuffle); test<pset<T, 4>, num_keys>("parallel (16) shuffled", shuffle, shuffle);
test<pset<T, 6>, num_keys>("parallel (64) ordered ", noop); test<pset<T, 6>, num_keys>("parallel (64) ordered ", noop, shuffle);
test<pset<T, 6>, num_keys>("parallel (64) shuffled", shuffle); test<pset<T, 6>, num_keys>("parallel (64) shuffled", shuffle, shuffle);
test<pset<T, 8>, num_keys>("parallel (256) ordered ", noop); test<pset<T, 8>, num_keys>("parallel (256) ordered ", noop, shuffle);
test<pset<T, 8>, num_keys>("parallel (256) shuffled", shuffle); test<pset<T, 8>, num_keys>("parallel (256) shuffled", shuffle, shuffle);
} }