Skip to content

Commit

Permalink
bench: Benchmark GCS filter creation and matching.
Browse files Browse the repository at this point in the history
Cherry-picked from: 254c85b
  • Loading branch information
jimpo authored and xanimo committed Dec 19, 2024
1 parent 57d48ee commit 1118383
Show file tree
Hide file tree
Showing 2 changed files with 44 additions and 0 deletions.
1 change: 1 addition & 0 deletions src/Makefile.bench.include
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ bench_bench_dogecoin_SOURCES = \
bench/rollingbloom.cpp \
bench/crypto_hash.cpp \
bench/ccoins_caching.cpp \
bench/gcs_filter.cpp \
bench/mempool_eviction.cpp \
bench/base58.cpp \
bench/lockedpool.cpp \
Expand Down
43 changes: 43 additions & 0 deletions src/bench/gcs_filter.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
// Copyright (c) 2018 The Bitcoin Core developers
// Distributed under the MIT software license, see the accompanying
// file COPYING or http://www.opensource.org/licenses/mit-license.php.

#include <bench/bench.h>
#include <blockfilter.h>

static void ConstructGCSFilter(benchmark::State& state)
{
GCSFilter::ElementSet elements;
for (int i = 0; i < 10000; ++i) {
GCSFilter::Element element(32);
element[0] = static_cast<unsigned char>(i);
element[1] = static_cast<unsigned char>(i >> 8);
elements.insert(std::move(element));
}

uint64_t siphash_k0 = 0;
while (state.KeepRunning()) {
GCSFilter filter(siphash_k0, 0, 20, 1 << 20, elements);

siphash_k0++;
}
}

static void MatchGCSFilter(benchmark::State& state)
{
GCSFilter::ElementSet elements;
for (int i = 0; i < 10000; ++i) {
GCSFilter::Element element(32);
element[0] = static_cast<unsigned char>(i);
element[1] = static_cast<unsigned char>(i >> 8);
elements.insert(std::move(element));
}
GCSFilter filter(0, 0, 20, 1 << 20, elements);

while (state.KeepRunning()) {
filter.Match(GCSFilter::Element());
}
}

BENCHMARK(ConstructGCSFilter);
BENCHMARK(MatchGCSFilter);

0 comments on commit 1118383

Please sign in to comment.