4 Commits

Author SHA1 Message Date
6a0344e821 Remove some vestigial cmake stuff
All checks were successful
Tests / Release [gcc] total: 704, passed: 704
GNU C Compiler (gcc) |Total|New|Outstanding|Fixed|Trend |:-:|:-:|:-:|:-:|:-: |0|0|0|0|:clap: Reference build: <a href="https://jenkins.weaselab.dev/job/weaselab/job/conflict-set/job/main/58//gcc">weaselab » conflict-set » main #58</a>
Tests / Release [gcc,aarch64] total: 703, passed: 703
Tests / Coverage total: 702, passed: 702
weaselab/conflict-set/pipeline/head This commit looks good
2024-03-05 18:10:51 -08:00
2fcf3da29f Use a warmup instead
Seems more stable
2024-03-05 17:22:11 -08:00
c8495b1695 Drain all pending work in hashtable's setOldestVersion 2024-03-05 17:18:58 -08:00
d81d02f11d Don't gc in write benchmarks
This makes it easier to evaluate the claim that "point writes are
comparable to point reads" in performance, which should be the case.
2024-03-05 17:09:28 -08:00
3 changed files with 12 additions and 16 deletions

View File

@@ -60,7 +60,6 @@ void benchConflictSet() {
ConflictSet cs{0}; ConflictSet cs{0};
bench.batch(kOpsPerTx); bench.batch(kOpsPerTx);
bench.minEpochIterations(10000);
int64_t version = 0; int64_t version = 0;
@@ -192,7 +191,6 @@ void benchConflictSet() {
bench.run("point writes", [&]() { bench.run("point writes", [&]() {
auto v = ++version; auto v = ++version;
cs.addWrites(writes.data(), writes.size(), v); cs.addWrites(writes.data(), writes.size(), v);
cs.setOldestVersion(version - kMvccWindow);
}); });
} }
@@ -213,7 +211,6 @@ void benchConflictSet() {
bench.run("prefix writes", [&]() { bench.run("prefix writes", [&]() {
auto v = ++version; auto v = ++version;
cs.addWrites(writes.data(), writes.size(), v); cs.addWrites(writes.data(), writes.size(), v);
cs.setOldestVersion(version - kMvccWindow);
}); });
} }
@@ -234,12 +231,13 @@ void benchConflictSet() {
bench.run("range writes", [&]() { bench.run("range writes", [&]() {
auto v = ++version; auto v = ++version;
cs.addWrites(writes.data(), writes.size(), v); cs.addWrites(writes.data(), writes.size(), v);
cs.setOldestVersion(version - kMvccWindow);
}); });
} }
bench.batch(1); bench.batch(1);
bench.warmup(10000);
{ {
bench.run("monotonic increasing point writes", [&]() { bench.run("monotonic increasing point writes", [&]() {
auto v = ++version; auto v = ++version;

View File

@@ -219,10 +219,6 @@ if(BUILD_TESTING)
add_executable(conflict_set_bench Bench.cpp) add_executable(conflict_set_bench Bench.cpp)
target_link_libraries(conflict_set_bench PRIVATE ${PROJECT_NAME}) target_link_libraries(conflict_set_bench PRIVATE ${PROJECT_NAME})
set_target_properties(conflict_set_bench PROPERTIES SKIP_BUILD_RPATH ON) set_target_properties(conflict_set_bench PROPERTIES SKIP_BUILD_RPATH ON)
# target_compile_options(conflict_set_bench PRIVATE
# "-fsanitize=address,undefined,fuzzer")
# target_link_options(conflict_set_bench PRIVATE
# "-fsanitize=address,undefined,fuzzer")
add_executable(real_data_bench RealDataBench.cpp) add_executable(real_data_bench RealDataBench.cpp)
target_link_libraries(real_data_bench PRIVATE ${PROJECT_NAME}) target_link_libraries(real_data_bench PRIVATE ${PROJECT_NAME})

View File

@@ -56,16 +56,18 @@ struct __attribute__((visibility("hidden"))) ConflictSet::Impl {
return; return;
} }
auto iter = map.find(removalKey); auto iter = map.find(removalKey);
while (keyUpdates > 0) {
if (iter == map.end()) { if (iter == map.end()) {
iter = map.begin(); iter = map.begin();
} }
for (; keyUpdates > 0 && iter != map.end(); --keyUpdates) { for (; iter != map.end(); --keyUpdates) {
if (iter->second <= oldestVersion) { if (iter->second <= oldestVersion) {
iter = map.erase(iter); iter = map.erase(iter);
} else { } else {
++iter; ++iter;
} }
} }
}
if (iter == map.end()) { if (iter == map.end()) {
removalKey.clear(); removalKey.clear();
} else { } else {