@@ -366,27 +366,29 @@ void executor::scan_collisions() const
366366 // TODO: expose filter type from hashhead to table.
367367 // /////////////////////////////////////////////////////////////////////////
368368 constexpr size_t m = 32 ;
369- using bloom_t = bloom<m, 4 >;
370- using sieve_t = sieve<m, 4 >;
369+ constexpr size_t k = floored_log2 (m);
370+ using bloom_t = bloom<m, k>;
371+ // //using sieve_t = sieve<m, 3>;
371372 // /////////////////////////////////////////////////////////////////////////
372373
373374 constexpr auto empty_bloom = unmask_right<bloom_t ::type>(m);
374375 std_vector<bloom_t ::type> bloom_filter (point_buckets, empty_bloom);
375376 size_t bloom_collisions{};
376377 size_t bloom_subtotal{};
377378
378- constexpr auto empty_sieve = unmask_right<sieve_t ::type>(m);
379- std_vector<sieve_t ::type> sieve_filter (point_buckets, empty_sieve);
380- size_t sieve_collisions{};
381- size_t sieve_subtotal{};
379+ // // constexpr auto empty_sieve = unmask_right<sieve_t::type>(m);
380+ // // std_vector<sieve_t::type> sieve_filter(point_buckets, empty_sieve);
381+ // // size_t sieve_collisions{};
382+ // // size_t sieve_subtotal{};
382383
383384 size_t coinbases{};
384385 size_t window{};
385386
386- while (!cancel_ && (++index <= query_.get_top_candidate ()))
387+ const auto top = query_.get_top_associated ();
388+ for (index = zero; index <= top && !cancel_; ++index)
387389 {
388390 ++coinbases;
389- const header_link link{ possible_narrow_cast<hint> (index) } ;
391+ const auto link = query_. to_candidate (index);
390392 const auto transactions = query_.to_transactions (link);
391393 for (const auto & transaction: transactions)
392394 {
@@ -408,12 +410,12 @@ void executor::scan_collisions() const
408410 bloom_collisions += coll;
409411 bloom_subtotal += coll;
410412
411- prev = sieve_filter.at (bucket);
412- next = sieve_t::screen (prev, entropy);
413- sieve_filter.at (bucket) = next;
414- coll = to_int (sieve_t::is_collision (prev, next));
415- sieve_collisions += coll;
416- sieve_subtotal += coll;
413+ // // prev = sieve_filter.at(bucket);
414+ // // next = sieve_t::screen(prev, entropy);
415+ // // sieve_filter.at(bucket) = next;
416+ // // coll = to_int(sieve_t::is_collision(prev, next));
417+ // // sieve_collisions += coll;
418+ // // sieve_subtotal += coll;
417419
418420 if (is_zero (inserts % put_frequency))
419421 {
@@ -422,13 +424,13 @@ void executor::scan_collisions() const
422424 (to_double (bloom_subtotal) / window) %
423425 duration_cast<seconds>(logger::now () - start).count ());
424426
425- logger (format (" point: %1% sieve fps %2% rate %3$.7f in %4% secs." ) %
426- inserts% sieve_collisions %
427- (to_double (sieve_subtotal) / window) %
428- duration_cast<seconds>(logger::now () - start).count ());
427+ // // logger(format("point: %1% sieve fps %2% rate %3$.7f in %4% secs.") %
428+ // // inserts % sieve_collisions %
429+ // // (to_double(sieve_subtotal) / window) %
430+ // // duration_cast<seconds>(logger::now() - start).count());
429431
432+ // //sieve_subtotal = zero;
430433 bloom_subtotal = zero;
431- sieve_subtotal = zero;
432434 window = zero;
433435 }
434436 }
@@ -452,10 +454,10 @@ void executor::scan_collisions() const
452454 bloom_spend_collisions % spends % coinbases %
453455 (to_double (bloom_spend_collisions) / spends));
454456
455- const auto sieve_spend_collisions = sieve_collisions - coinbases;
456- logger (format (" sieve: %1% fps of %2% spends (ex %3% cbs) rate %4%" ) %
457- sieve_spend_collisions % spends % coinbases %
458- (to_double (sieve_spend_collisions) / spends));
457+ // // const auto sieve_spend_collisions = sieve_collisions - coinbases;
458+ // // logger(format("sieve: %1% fps of %2% spends (ex %3% cbs) rate %4%") %
459+ // // sieve_spend_collisions % spends % coinbases %
460+ // // (to_double(sieve_spend_collisions) / spends));
459461
460462 for (const auto & entry: dump (spend))
461463 logger (format (" point: %1% frequency: %2%" ) %
0 commit comments