22static constexpr uint32_t BITS = 32;
24uint32_t FindBestImplementation()
26 std::optional<std::pair<SteadyClock::duration, uint32_t>> best;
28 uint32_t max_impl = Minisketch::MaxImplementation();
29 for (uint32_t impl = 0; impl <= max_impl; ++impl) {
30 std::vector<SteadyClock::duration> benches;
33 for (
int b = 0; b < 11; ++b) {
34 if (!Minisketch::ImplementationSupported(BITS, impl))
break;
35 Minisketch sketch(BITS, impl, 32);
36 auto start = SteadyClock::now();
37 for (uint64_t e = 0; e < 100; ++e) {
38 sketch.Add(e*1337 + b*13337 + offset);
40 for (uint64_t e = 0; e < 84; ++e) {
41 sketch.Add(e*1337 + b*13337 + offset);
43 offset += (*sketch.Decode(32))[0];
44 auto stop = SteadyClock::now();
45 benches.push_back(
stop - start);
48 if (!benches.empty()) {
49 std::sort(benches.begin(), benches.end());
50 if (!best || best->first > benches[5]) {
51 best = std::make_pair(benches[5], impl);
56 LogPrintf(
"Using Minisketch implementation number %i\n", best->second);
60uint32_t Minisketch32Implementation()
63 static uint32_t best = FindBestImplementation();
72 return Minisketch(BITS, Minisketch32Implementation(), capacity);
77 return Minisketch::CreateFP(BITS, Minisketch32Implementation(), max_elements, fpbits);
Minisketch MakeMinisketch32FP(size_t max_elements, uint32_t fpbits)
Wrapper around Minisketch::CreateFP.
Minisketch MakeMinisketch32(size_t capacity)
Wrapper around Minisketch::Minisketch(32, implementation, capacity).