void hll_union_accuracy_profile::run_trial()

in cpp/src/hll_union_accuracy_profile.cpp [26:50]


void hll_union_accuracy_profile::run_trial() {
  const size_t lg_k = 12;
  const size_t num_sketches = 32;

  std::unique_ptr<hll_sketch> sketches[num_sketches];
  for (size_t i = 0; i < num_sketches; i++) {
    sketches[i] = std::unique_ptr<hll_sketch>(new hll_sketch(lg_k));
  }
  hll_union u(lg_k);

  size_t count = 0;
  size_t i = 0;
  for (auto& stat: stats) {
    const size_t delta = stat.get_true_value() - count;
    for (size_t j = 0; j < delta; j++) {
      sketches[i++]->update(key++);
      if (i == num_sketches) i = 0;
    }
    count += delta;
    for (auto& sketch: sketches) {
      u.update(*sketch);
    }
    stat.update(u.get_result().get_estimate());
  }
}