Add bulkFirstGeq benchmark
This commit is contained in:
48
Bench.cpp
48
Bench.cpp
@@ -1,4 +1,5 @@
|
|||||||
#include "Facade.h"
|
#include "Facade.h"
|
||||||
|
#include "Internal.h"
|
||||||
|
|
||||||
#include <nanobench.h>
|
#include <nanobench.h>
|
||||||
|
|
||||||
@@ -55,8 +56,49 @@ void monotonicallyIncreasing() {
|
|||||||
});
|
});
|
||||||
|
|
||||||
bench.run("end", [&] { facade.versioned.end(v); });
|
bench.run("end", [&] { facade.versioned.end(v); });
|
||||||
|
|
||||||
// TODO benchmark reads
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int main() { monotonicallyIncreasing(); }
|
void bulkFirstGeq() {
|
||||||
|
constexpr int kNumKeys = 100000;
|
||||||
|
constexpr int kNumQueries = 100;
|
||||||
|
ankerl::nanobench::Bench bench;
|
||||||
|
bench.batch(kNumQueries);
|
||||||
|
|
||||||
|
// Initialize `versionedMap`
|
||||||
|
weaselab::VersionedMap versionedMap{0};
|
||||||
|
for (int64_t i = 0; i < kNumKeys; ++i) {
|
||||||
|
const auto bigEndian = __builtin_bswap64(i);
|
||||||
|
weaselab::VersionedMap::Mutation m;
|
||||||
|
m.param1 = (const uint8_t *)&bigEndian;
|
||||||
|
m.param1Len = sizeof(bigEndian);
|
||||||
|
m.param2 = (const uint8_t *)&bigEndian;
|
||||||
|
m.param2Len = sizeof(bigEndian);
|
||||||
|
m.type = weaselab::VersionedMap::Set;
|
||||||
|
versionedMap.addMutations(&m, 1, i + 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Prepare queries
|
||||||
|
Arena arena;
|
||||||
|
auto *keys = new (arena) weaselab::VersionedMap::Key[kNumQueries];
|
||||||
|
auto *versions = new (arena) int64_t[kNumQueries];
|
||||||
|
for (int64_t i = 0; i < kNumQueries; ++i) {
|
||||||
|
int64_t version = i * kNumKeys / kNumQueries;
|
||||||
|
versions[i] = version;
|
||||||
|
const auto bigEndian = __builtin_bswap64(version);
|
||||||
|
uint8_t *k = new (arena) uint8_t[sizeof(bigEndian)];
|
||||||
|
memcpy(k, &bigEndian, sizeof(bigEndian));
|
||||||
|
keys[i].p = k;
|
||||||
|
keys[i].len = sizeof(bigEndian);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Bench
|
||||||
|
bench.run("bulkFirstGeq", [&] {
|
||||||
|
weaselab::VersionedMap::Iterator iterators[kNumQueries];
|
||||||
|
versionedMap.firstGeq(keys, versions, iterators, kNumQueries);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
int main() {
|
||||||
|
monotonicallyIncreasing();
|
||||||
|
bulkFirstGeq();
|
||||||
|
}
|
Reference in New Issue
Block a user