From aee9a8140b3a58b744766f9e89572f1d953a808b Mon Sep 17 00:00:00 2001 From: Patrick Strateman Date: Mon, 15 Jun 2020 19:41:18 -0400 Subject: [PATCH] Add GCSFilterDecodeSkipCheck benchmark This benchmark allows us to compare the differences between doing the sanity check for corruption via GolombRiceDecode() vs checking the hash of the encoded block filter. --- src/bench/gcs_filter.cpp | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/bench/gcs_filter.cpp b/src/bench/gcs_filter.cpp index c96e9b7f3..0b4365245 100644 --- a/src/bench/gcs_filter.cpp +++ b/src/bench/gcs_filter.cpp @@ -54,6 +54,18 @@ static void GCSFilterDecode(benchmark::Bench& bench) }); } +static void GCSFilterDecodeSkipCheck(benchmark::Bench& bench) +{ + auto elements = GenerateGCSTestElements(); + + GCSFilter filter({0, 0, BASIC_FILTER_P, BASIC_FILTER_M}, elements); + auto encoded = filter.GetEncoded(); + + bench.run([&] { + GCSFilter filter({0, 0, BASIC_FILTER_P, BASIC_FILTER_M}, encoded, /*skip_decode_check=*/true); + }); +} + static void GCSFilterMatch(benchmark::Bench& bench) { auto elements = GenerateGCSTestElements(); @@ -67,4 +79,5 @@ static void GCSFilterMatch(benchmark::Bench& bench) BENCHMARK(GCSBlockFilterGetHash); BENCHMARK(GCSFilterConstruct); BENCHMARK(GCSFilterDecode); +BENCHMARK(GCSFilterDecodeSkipCheck); BENCHMARK(GCSFilterMatch);