static void bm_rank(benchmark::State& state) { const auto br = gen_binary_relation(/*max_size=*/1'000'000, /*max_object=*/object_id(100'000), /*max_label=*/label_id(state.range(0))); while (state.KeepRunning()) { auto const max_object = gen_object(br); auto const max_label = gen_label(br); DoNotOptimize(br.rank(max_object, max_label)); } }
static void bm_count_distinct_labels(benchmark::State& state) { const auto br = gen_binary_relation(/*max_size=*/1'000'000, /*max_object=*/object_id(100'000), /*max_label=*/label_id(state.range(0))); while (state.KeepRunning()) { const auto obj_range = gen_object_range(br); const auto lab_range = gen_label_range(br); DoNotOptimize(br.count_distinct_labels(obj_range.first, obj_range.second, lab_range.first, lab_range.second)); } }
static void bm_nth_element_obj_maj(benchmark::State& state) { const auto br = gen_binary_relation(/*max_size=*/1'000'000, /*max_object=*/object_id(100'000), /*max_label=*/label_id(state.range(0))); while (state.KeepRunning()) { auto obj_start = gen_object(br); auto lab_range = gen_label_range(br); DoNotOptimize(br.nth_element(obj_start, lab_range.first, lab_range.second, 42, brwt::obj_major)); } }
static void bm_lower_bound(benchmark::State& state) { const auto br = gen_binary_relation(/*max_size=*/1'000'000, /*max_object=*/object_id(100'000), /*max_label=*/label_id(state.range(0))); while (state.KeepRunning()) { const auto lab_range = gen_label_range(br); auto start = gen_pair(br); start.label = clamp(start.label, lab_range.first, lab_range.second); DoNotOptimize(br.lower_bound(start, lab_range.first, lab_range.second, brwt::obj_major)); } }