contrib: Make X=Y arguments work in install_db4
[bitcoinplatinum.git] / src / bench / rollingbloom.cpp
blob452099b80016eceb755123bcb4aeda95b29b6905
1 // Copyright (c) 2016 The Bitcoin Core developers
2 // Distributed under the MIT software license, see the accompanying
3 // file COPYING or http://www.opensource.org/licenses/mit-license.php.
5 #include <iostream>
7 #include <bench/bench.h>
8 #include <bloom.h>
10 static void RollingBloom(benchmark::State& state)
12 CRollingBloomFilter filter(120000, 0.000001);
13 std::vector<unsigned char> data(32);
14 uint32_t count = 0;
15 uint32_t nEntriesPerGeneration = (120000 + 1) / 2;
16 uint32_t countnow = 0;
17 uint64_t match = 0;
18 while (state.KeepRunning()) {
19 count++;
20 data[0] = count;
21 data[1] = count >> 8;
22 data[2] = count >> 16;
23 data[3] = count >> 24;
24 if (countnow == nEntriesPerGeneration) {
25 auto b = benchmark::clock::now();
26 filter.insert(data);
27 auto total = std::chrono::duration_cast<std::chrono::nanoseconds>(benchmark::clock::now() - b).count();
28 std::cout << "RollingBloom-refresh,1," << total << "," << total << "," << total << "\n";
29 countnow = 0;
30 } else {
31 filter.insert(data);
33 countnow++;
34 data[0] = count >> 24;
35 data[1] = count >> 16;
36 data[2] = count >> 8;
37 data[3] = count;
38 match += filter.contains(data);
42 BENCHMARK(RollingBloom);