diff options
author | Calvin Kim <calvin@kcalvinalvin.info> | 2022-05-22 14:17:15 +0900 |
---|---|---|
committer | Calvin Kim <calvin@kcalvinalvin.info> | 2022-05-22 14:17:15 +0900 |
commit | e734228d8585c0870c71ce8ba8c037f8cf8b249a (patch) | |
tree | b0dd6a4d8cf9c031ab30134b234927ef313d23ae /src/bench/gcs_filter.cpp | |
parent | aee9a8140b3a58b744766f9e89572f1d953a808b (diff) | |
download | bitcoin-e734228d8585c0870c71ce8ba8c037f8cf8b249a.tar.xz |
Update GCSFilter benchmarks
Element count used in the GCSFilter benchmarks are increased to 100,000
from 10,000. Testing the benchmarks with different element counts showed
that a filter with 100,000 elements resulted in the same ns/op. This
this a desirable thing to have as it allows us to reason about how long
a single filter element takes to process, letting us easily calculate
how long a filter with N elements (where N > 100,000) would take to
process.
GCSFilterConstruct benchmark is now called without batch. This makes
intra-bench results more intuitive as all benchmarks are in ns/op
instead of a custom unit. There are no downsides to this change as
testing showed that there is no observable difference in error rates
in the benchmarks when calling without batch.
Diffstat (limited to 'src/bench/gcs_filter.cpp')
-rw-r--r-- | src/bench/gcs_filter.cpp | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/src/bench/gcs_filter.cpp b/src/bench/gcs_filter.cpp index 0b43652453..80babb213b 100644 --- a/src/bench/gcs_filter.cpp +++ b/src/bench/gcs_filter.cpp @@ -8,7 +8,12 @@ static const GCSFilter::ElementSet GenerateGCSTestElements() { GCSFilter::ElementSet elements; - for (int i = 0; i < 10000; ++i) { + + // Testing the benchmarks with different number of elements show that a filter + // with at least 100,000 elements results in benchmarks that have the same + // ns/op. This makes it easy to reason about how long (in nanoseconds) a single + // filter element takes to process. + for (int i = 0; i < 100000; ++i) { GCSFilter::Element element(32); element[0] = static_cast<unsigned char>(i); element[1] = static_cast<unsigned char>(i >> 8); @@ -35,7 +40,7 @@ static void GCSFilterConstruct(benchmark::Bench& bench) auto elements = GenerateGCSTestElements(); uint64_t siphash_k0 = 0; - bench.batch(elements.size()).unit("elem").run([&] { + bench.run([&]{ GCSFilter filter({siphash_k0, 0, BASIC_FILTER_P, BASIC_FILTER_M}, elements); siphash_k0++; |