int main()

in cpp/src/main.cpp [75:135]


int main(int argc, char **argv) {
  job_profile::add("cpc-sketch-timing", job_profile_ptr(new cpc_sketch_timing_profile()));
  job_profile::add("cpc-union-timing", job_profile_ptr(new cpc_union_timing_profile()));
  job_profile::add("hll-sketch-timing", job_profile_ptr(new hll_sketch_timing_profile()));
  job_profile::add("hll-union-timing", job_profile_ptr(new hll_union_timing_profile()));
  job_profile::add("theta-sketch-timing", job_profile_ptr(new theta_sketch_timing_profile()));
  job_profile::add("theta-union-timing", job_profile_ptr(new theta_union_timing_profile()));
  job_profile::add("tuple-sketch-timing", job_profile_ptr(new tuple_sketch_timing_profile()));
  job_profile::add("tuple-union-timing", job_profile_ptr(new tuple_union_timing_profile()));
  job_profile::add("kll-sketch-timing-float", job_profile_ptr(new kll_sketch_timing_profile<float>()));
  job_profile::add("kll-sketch-timing-string", job_profile_ptr(new kll_sketch_timing_profile<std::string>()));
  job_profile::add("kll-merge-timing-float", job_profile_ptr(new kll_merge_timing_profile<float>()));
  job_profile::add("kll-merge-timing-string", job_profile_ptr(new kll_merge_timing_profile<std::string>()));
  job_profile::add("fi-sketch-timing", job_profile_ptr(new frequent_items_sketch_timing_profile()));
  job_profile::add("fi-merge-timing", job_profile_ptr(new frequent_items_merge_timing_profile()));
  job_profile::add("req-sketch-timing-float", job_profile_ptr(new req_sketch_timing_profile<float>()));
  job_profile::add("req-merge-timing-float", job_profile_ptr(new req_merge_timing_profile<float>()));
  job_profile::add("req-sketch-timing-double", job_profile_ptr(new req_sketch_timing_profile<double>()));

  job_profile::add("cpc-sketch-accuracy", job_profile_ptr(new cpc_sketch_accuracy_profile()));
  job_profile::add("cpc-union-accuracy", job_profile_ptr(new cpc_union_accuracy_profile()));
  job_profile::add("hll-sketch-accuracy", job_profile_ptr(new hll_sketch_accuracy_profile()));
  job_profile::add("hll-union-accuracy", job_profile_ptr(new hll_union_accuracy_profile()));
  job_profile::add("theta-sketch-accuracy", job_profile_ptr(new theta_sketch_accuracy_profile()));
  job_profile::add("theta-union-accuracy", job_profile_ptr(new theta_union_accuracy_profile()));
  job_profile::add("kll-sketch-accuracy", job_profile_ptr(new kll_sketch_accuracy_profile()));
  job_profile::add("kll-merge-accuracy", job_profile_ptr(new kll_merge_accuracy_profile()));
  job_profile::add("fi-sketch-accuracy", job_profile_ptr(new frequent_items_sketch_accuracy_profile()));
  job_profile::add("req-error-vs-rank-double", job_profile_ptr(new req_error_vs_rank_profile<double>()));

  job_profile::add("tdigest-timing-double", job_profile_ptr(new tdigest_timing_profile<double>()));
  job_profile::add("tdigest-sketch-accuracy-double", job_profile_ptr(new tdigest_sketch_accuracy_profile<double>()));
  job_profile::add("tdigest-merge-accuracy-double", job_profile_ptr(new tdigest_merge_accuracy_profile<double>()));
  job_profile::add("tdigest-timing-float", job_profile_ptr(new tdigest_timing_profile<float>()));
  job_profile::add("tdigest-sketch-accuracy-float", job_profile_ptr(new tdigest_sketch_accuracy_profile<float>()));
  job_profile::add("tdigest-merge-accuracy-float", job_profile_ptr(new tdigest_merge_accuracy_profile<float>()));
  job_profile::add("tdigest-memory-float", job_profile_ptr(new tdigest_memory_profile<float>()));
  job_profile::add("tdigest-memory-double", job_profile_ptr(new tdigest_memory_profile<double>()));

  job_profile::add("cpc-sketch-memory", job_profile_ptr(new cpc_sketch_memory_profile()));
  job_profile::add("hll-sketch-memory", job_profile_ptr(new hll_sketch_memory_profile()));
  job_profile::add("theta-sketch-memory", job_profile_ptr(new theta_sketch_memory_profile()));
  job_profile::add("kll-sketch-memory-float", job_profile_ptr(new kll_sketch_memory_profile<float>()));
  job_profile::add("kll-sketch-memory-int64", job_profile_ptr(new kll_sketch_memory_profile<int64_t>()));

  job_profile::add("hll-cross-lang", job_profile_ptr(new hll_cross_language_profile()));

  if (argc == 2) {
    datasketches::job_profile& profile = datasketches::job_profile::instance(argv[1]);
    profile.run();
  } else {
    std::cerr << "One parameter expected: profile name" << std::endl;
    std::cerr << "Known profiles:" << std::endl;

    std::vector<std::string> profile_names = job_profile::get_profile_names();
    for (std::string& name : profile_names) {
      std::cerr << "\t" << name << std::endl;
    }
  }
  return 0;
}