Skip to content

Commit c844492

Browse files
committed
Minor fixes
1 parent 42deb8e commit c844492

File tree

2 files changed

+27
-12
lines changed

2 files changed

+27
-12
lines changed

libcxx/include/__iterator/distance.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ __distance(_RandIter __first, _RandIter __last) {
5959
#if _LIBCPP_STD_VER >= 20
6060
template <class _SegmentedIter,
6161
__enable_if_t<!__has_random_access_iterator_category<_SegmentedIter>::value &&
62-
__is_segmented_iterator<_SegmentedIter>::value,
62+
__is_segmented_iterator_v<_SegmentedIter>,
6363
int> = 0>
6464
inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 __iter_distance_t<_SegmentedIter>
6565
__distance(_SegmentedIter __first, _SegmentedIter __last) {

libcxx/test/benchmarks/iterators/distance.bench.cpp

Lines changed: 26 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88

99
// UNSUPPORTED: c++03, c++11, c++14, c++17
1010

11+
#include <algorithm>
1112
#include <cstddef>
1213
#include <deque>
1314
#include <iterator>
@@ -19,7 +20,31 @@
1920
int main(int argc, char** argv) {
2021
auto std_distance = [](auto first, auto last) { return std::distance(first, last); };
2122

22-
// {std,ranges}::distance
23+
// {std,ranges}::distance(std::deque)
24+
{
25+
auto bm = [](std::string name, auto distance) {
26+
benchmark::RegisterBenchmark(
27+
name,
28+
[distance](auto& st) {
29+
std::size_t const size = st.range(0);
30+
std::deque<int> c(size, 1);
31+
32+
for ([[maybe_unused]] auto _ : st) {
33+
benchmark::DoNotOptimize(c);
34+
auto result = distance(c.begin(), c.end());
35+
benchmark::DoNotOptimize(result);
36+
}
37+
})
38+
->Arg(50) // non power-of-two
39+
->Arg(1024)
40+
->Arg(4096)
41+
->Arg(8192);
42+
};
43+
bm.operator()("std::distance(deque<int>)", std_distance);
44+
bm.operator()("rng::distance(deque<int>)", std::ranges::distance);
45+
}
46+
47+
// {std,ranges}::distance(std::join_view)
2348
{
2449
auto bm = []<class Container>(std::string name, auto distance, std::size_t seg_size) {
2550
benchmark::RegisterBenchmark(
@@ -48,18 +73,8 @@ int main(int argc, char** argv) {
4873
->Arg(8192);
4974
};
5075
bm.operator()<std::vector<std::vector<int>>>("std::distance(join_view(vector<vector<int>>))", std_distance, 256);
51-
bm.operator()<std::deque<std::deque<int>>>("std::distance(join_view(deque<deque<int>>))", std_distance, 256);
5276
bm.operator()<std::vector<std::vector<int>>>(
5377
"rng::distance(join_view(vector<vector<int>>)", std::ranges::distance, 256);
54-
bm.operator()<std::deque<std::deque<int>>>(
55-
"rng::distance(join_view(deque<deque<int>>)", std::ranges::distance, 256);
56-
57-
bm.operator()<std::vector<std::vector<int>>>("std::distance(join_view(vector<vector<int>>))", std_distance, 1024);
58-
bm.operator()<std::deque<std::deque<int>>>("std::distance(join_view(deque<deque<int>>))", std_distance, 1024);
59-
bm.operator()<std::vector<std::vector<int>>>(
60-
"rng::distance(join_view(vector<vector<int>>)", std::ranges::distance, 1024);
61-
bm.operator()<std::deque<std::deque<int>>>(
62-
"rng::distance(join_view(deque<deque<int>>)", std::ranges::distance, 1024);
6378
}
6479

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

0 commit comments

Comments
 (0)