Skip to content

Commit 0f4d75b

Browse files
committed
Use functions instead of macros
1 parent 7d797b8 commit 0f4d75b

File tree

4 files changed

+130
-135
lines changed

4 files changed

+130
-135
lines changed

libcxx/test/benchmarks/algorithms/sorting/partial_sort.bench.cpp

Lines changed: 25 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -60,32 +60,32 @@ int main(int argc, char** argv) {
6060
->Arg(1024)
6161
->Arg(8192);
6262
};
63-
#define BENCH(generate_data, name) \
64-
do { \
65-
auto gen1 = [](auto size) { return generate_data<int>(size); }; \
66-
auto gen2 = [](auto size) { \
67-
auto data = generate_data<int>(size); \
68-
std::vector<support::NonIntegral> real_data(data.begin(), data.end()); \
69-
return real_data; \
70-
}; \
71-
bm.operator()<std::vector<int>>("std::partial_sort(vector<int>) (" #name ")", std_partial_sort, gen1); \
72-
bm.operator()<std::vector<support::NonIntegral>>( \
73-
"std::partial_sort(vector<NonIntegral>) (" #name ")", std_partial_sort, gen2); \
74-
bm.operator()<std::deque<int>>("std::partial_sort(deque<int>) (" #name ")", std_partial_sort, gen1); \
75-
\
76-
bm.operator()<std::vector<int>>("rng::partial_sort(vector<int>) (" #name ")", std::ranges::partial_sort, gen1); \
77-
bm.operator()<std::vector<support::NonIntegral>>( \
78-
"rng::partial_sort(vector<NonIntegral>) (" #name ")", std::ranges::partial_sort, gen2); \
79-
bm.operator()<std::deque<int>>("rng::partial_sort(deque<int>) (" #name ")", std::ranges::partial_sort, gen1); \
80-
} while (false)
8163

82-
BENCH(support::quicksort_adversarial_data, "qsort adversarial");
83-
BENCH(support::ascending_sorted_data, "ascending");
84-
BENCH(support::descending_sorted_data, "descending");
85-
BENCH(support::pipe_organ_data, "pipe-organ");
86-
BENCH(support::heap_data, "heap");
87-
BENCH(support::shuffled_data, "shuffled");
88-
BENCH(support::single_element_data, "repeated");
64+
auto register_bm = [&](auto generate, std::string variant) {
65+
auto gen2 = [generate](auto size) {
66+
std::vector<int> data = generate(size);
67+
std::vector<support::NonIntegral> real_data(data.begin(), data.end());
68+
return real_data;
69+
};
70+
auto name = [variant](std::string op) { return op + " (" + variant + ")"; };
71+
bm.operator()<std::vector<int>>(name("std::partial_sort(vector<int>"), std_partial_sort, generate);
72+
bm.operator()<std::vector<support::NonIntegral>>(
73+
name("std::partial_sort(vector<NonIntegral>"), std_partial_sort, gen2);
74+
bm.operator()<std::deque<int>>(name("std::partial_sort(deque<int>"), std_partial_sort, generate);
75+
76+
bm.operator()<std::vector<int>>(name("rng::partial_sort(vector<int>"), std::ranges::partial_sort, generate);
77+
bm.operator()<std::vector<support::NonIntegral>>(
78+
name("rng::partial_sort(vector<NonIntegral>"), std::ranges::partial_sort, gen2);
79+
bm.operator()<std::deque<int>>(name("rng::partial_sort(deque<int>"), std::ranges::partial_sort, generate);
80+
};
81+
82+
register_bm(support::quicksort_adversarial_data<int>, "qsort adversarial");
83+
register_bm(support::ascending_sorted_data<int>, "ascending");
84+
register_bm(support::descending_sorted_data<int>, "descending");
85+
register_bm(support::pipe_organ_data<int>, "pipe-organ");
86+
register_bm(support::heap_data<int>, "heap");
87+
register_bm(support::shuffled_data<int>, "shuffled");
88+
register_bm(support::single_element_data<int>, "repeated");
8989
}
9090

9191
benchmark::Initialize(&argc, argv);

libcxx/test/benchmarks/algorithms/sorting/partial_sort_copy.bench.cpp

Lines changed: 30 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -50,37 +50,37 @@ int main(int argc, char** argv) {
5050
->Arg(1024)
5151
->Arg(8192);
5252
};
53-
#define BENCH(generate_data, name) \
54-
do { \
55-
auto gen1 = [](auto size) { return generate_data<int>(size); }; \
56-
auto gen2 = [](auto size) { \
57-
auto data = generate_data<int>(size); \
58-
std::vector<support::NonIntegral> real_data(data.begin(), data.end()); \
59-
return real_data; \
60-
}; \
61-
bm.operator()<std::vector<int>>("std::partial_sort_copy(vector<int>) (" #name ")", std_partial_sort_copy, gen1); \
62-
bm.operator()<std::vector<support::NonIntegral>>( \
63-
"std::partial_sort_copy(vector<NonIntegral>) (" #name ")", std_partial_sort_copy, gen2); \
64-
bm.operator()<std::deque<int>>("std::partial_sort_copy(deque<int>) (" #name ")", std_partial_sort_copy, gen1); \
65-
bm.operator()<std::list<int>>("std::partial_sort_copy(list<int>) (" #name ")", std_partial_sort_copy, gen1); \
66-
\
67-
bm.operator()<std::vector<int>>( \
68-
"rng::partial_sort_copy(vector<int>) (" #name ")", std::ranges::partial_sort_copy, gen1); \
69-
bm.operator()<std::vector<support::NonIntegral>>( \
70-
"rng::partial_sort_copy(vector<NonIntegral>) (" #name ")", std::ranges::partial_sort_copy, gen2); \
71-
bm.operator()<std::deque<int>>( \
72-
"rng::partial_sort_copy(deque<int>) (" #name ")", std::ranges::partial_sort_copy, gen1); \
73-
bm.operator()<std::list<int>>( \
74-
"rng::partial_sort_copy(list<int>) (" #name ")", std::ranges::partial_sort_copy, gen1); \
75-
} while (false)
7653

77-
BENCH(support::quicksort_adversarial_data, "qsort adversarial");
78-
BENCH(support::ascending_sorted_data, "ascending");
79-
BENCH(support::descending_sorted_data, "descending");
80-
BENCH(support::pipe_organ_data, "pipe-organ");
81-
BENCH(support::heap_data, "heap");
82-
BENCH(support::shuffled_data, "shuffled");
83-
BENCH(support::single_element_data, "repeated");
54+
auto register_bm = [&](auto generate, std::string variant) {
55+
auto gen2 = [generate](auto size) {
56+
std::vector<int> data = generate(size);
57+
std::vector<support::NonIntegral> real_data(data.begin(), data.end());
58+
return real_data;
59+
};
60+
auto name = [variant](std::string op) { return op + " (" + variant + ")"; };
61+
bm.operator()<std::vector<int>>(name("std::partial_sort_copy(vector<int>)"), std_partial_sort_copy, generate);
62+
bm.operator()<std::vector<support::NonIntegral>>(
63+
name("std::partial_sort_copy(vector<NonIntegral>)"), std_partial_sort_copy, gen2);
64+
bm.operator()<std::deque<int>>(name("std::partial_sort_copy(deque<int>)"), std_partial_sort_copy, generate);
65+
bm.operator()<std::list<int>>(name("std::partial_sort_copy(list<int>)"), std_partial_sort_copy, generate);
66+
67+
bm.operator()<std::vector<int>>(
68+
name("rng::partial_sort_copy(vector<int>)"), std::ranges::partial_sort_copy, generate);
69+
bm.operator()<std::vector<support::NonIntegral>>(
70+
name("rng::partial_sort_copy(vector<NonIntegral>)"), std::ranges::partial_sort_copy, gen2);
71+
bm.operator()<std::deque<int>>(
72+
name("rng::partial_sort_copy(deque<int>)"), std::ranges::partial_sort_copy, generate);
73+
bm.operator()<std::list<int>>(
74+
name("rng::partial_sort_copy(list<int>)"), std::ranges::partial_sort_copy, generate);
75+
};
76+
77+
register_bm(support::quicksort_adversarial_data<int>, "qsort adversarial");
78+
register_bm(support::ascending_sorted_data<int>, "ascending");
79+
register_bm(support::descending_sorted_data<int>, "descending");
80+
register_bm(support::pipe_organ_data<int>, "pipe-organ");
81+
register_bm(support::heap_data<int>, "heap");
82+
register_bm(support::shuffled_data<int>, "shuffled");
83+
register_bm(support::single_element_data<int>, "repeated");
8484
}
8585

8686
benchmark::Initialize(&argc, argv);

libcxx/test/benchmarks/algorithms/sorting/sort.bench.cpp

Lines changed: 23 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -58,31 +58,30 @@ int main(int argc, char** argv) {
5858
->Arg(1024)
5959
->Arg(8192);
6060
};
61-
#define BENCH(generate_data, name) \
62-
do { \
63-
auto gen1 = [](auto size) { return generate_data<int>(size); }; \
64-
auto gen2 = [](auto size) { \
65-
auto data = generate_data<int>(size); \
66-
std::vector<support::NonIntegral> real_data(data.begin(), data.end()); \
67-
return real_data; \
68-
}; \
69-
bm.operator()<std::vector<int>>("std::sort(vector<int>) (" #name ")", std_sort, gen1); \
70-
bm.operator()<std::vector<support::NonIntegral>>("std::sort(vector<NonIntegral>) (" #name ")", std_sort, gen2); \
71-
bm.operator()<std::deque<int>>("std::sort(deque<int>) (" #name ")", std_sort, gen1); \
72-
\
73-
bm.operator()<std::vector<int>>("rng::sort(vector<int>) (" #name ")", std::ranges::sort, gen1); \
74-
bm.operator()<std::vector<support::NonIntegral>>( \
75-
"rng::sort(vector<NonIntegral>) (" #name ")", std::ranges::sort, gen2); \
76-
bm.operator()<std::deque<int>>("rng::sort(deque<int>) (" #name ")", std::ranges::sort, gen1); \
77-
} while (false)
7861

79-
BENCH(support::quicksort_adversarial_data, "qsort adversarial");
80-
BENCH(support::ascending_sorted_data, "ascending");
81-
BENCH(support::descending_sorted_data, "descending");
82-
BENCH(support::pipe_organ_data, "pipe-organ");
83-
BENCH(support::heap_data, "heap");
84-
BENCH(support::shuffled_data, "shuffled");
85-
BENCH(support::single_element_data, "repeated");
62+
auto register_bm = [&](auto generate, std::string variant) {
63+
auto gen2 = [generate](auto size) {
64+
std::vector<int> data = generate(size);
65+
std::vector<support::NonIntegral> real_data(data.begin(), data.end());
66+
return real_data;
67+
};
68+
auto name = [variant](std::string op) { return op + " (" + variant + ")"; };
69+
bm.operator()<std::vector<int>>(name("std::sort(vector<int>)"), std_sort, generate);
70+
bm.operator()<std::vector<support::NonIntegral>>(name("std::sort(vector<NonIntegral>)"), std_sort, gen2);
71+
bm.operator()<std::deque<int>>(name("std::sort(deque<int>)"), std_sort, generate);
72+
73+
bm.operator()<std::vector<int>>(name("rng::sort(vector<int>)"), std::ranges::sort, generate);
74+
bm.operator()<std::vector<support::NonIntegral>>(name("rng::sort(vector<NonIntegral>)"), std::ranges::sort, gen2);
75+
bm.operator()<std::deque<int>>(name("rng::sort(deque<int>)"), std::ranges::sort, generate);
76+
};
77+
78+
register_bm(support::quicksort_adversarial_data<int>, "qsort adversarial");
79+
register_bm(support::ascending_sorted_data<int>, "ascending");
80+
register_bm(support::descending_sorted_data<int>, "descending");
81+
register_bm(support::pipe_organ_data<int>, "pipe-organ");
82+
register_bm(support::heap_data<int>, "heap");
83+
register_bm(support::shuffled_data<int>, "shuffled");
84+
register_bm(support::single_element_data<int>, "repeated");
8685
}
8786

8887
benchmark::Initialize(&argc, argv);

0 commit comments

Comments
 (0)