11
11
#include < algorithm>
12
12
#include < cstddef>
13
13
#include < deque>
14
+ #include < forward_list>
14
15
#include < list>
15
16
#include < string>
16
17
#include < vector>
@@ -52,7 +53,7 @@ int main(int argc, char** argv) {
52
53
Container subrange (size / 10 , y); // subrange of length 10% of the full range
53
54
54
55
// put the element we're searching for at 25% of the sequence
55
- std::ranges::copy (subrange, std::next (c.begin (), c. size () / 4 ));
56
+ std::ranges::copy (subrange, std::next (c.begin (), size / 4 ));
56
57
57
58
for ([[maybe_unused]] auto _ : st) {
58
59
benchmark::DoNotOptimize (c);
@@ -70,17 +71,21 @@ int main(int argc, char** argv) {
70
71
bm.operator ()<std::vector<int >>(" std::find_end(vector<int>) (bail 25%)" , std_find_end);
71
72
bm.operator ()<std::deque<int >>(" std::find_end(deque<int>) (bail 25%)" , std_find_end);
72
73
bm.operator ()<std::list<int >>(" std::find_end(list<int>) (bail 25%)" , std_find_end);
74
+ bm.operator ()<std::forward_list<int >>(" std::find_end(forward_list<int>) (bail 25%)" , std_find_end);
73
75
bm.operator ()<std::vector<int >>(" rng::find_end(vector<int>) (bail 25%)" , std::ranges::find_end);
74
76
bm.operator ()<std::deque<int >>(" rng::find_end(deque<int>) (bail 25%)" , std::ranges::find_end);
75
77
bm.operator ()<std::list<int >>(" rng::find_end(list<int>) (bail 25%)" , std::ranges::find_end);
78
+ bm.operator ()<std::forward_list<int >>(" rng::find_end(forward_list<int>) (bail 25%)" , std::ranges::find_end);
76
79
77
80
// {std,ranges}::find_end(it1, it1, it2, it2, pred)
78
81
bm.operator ()<std::vector<int >>(" std::find_end(vector<int>, pred) (bail 25%)" , std_find_end_pred);
79
82
bm.operator ()<std::deque<int >>(" std::find_end(deque<int>, pred) (bail 25%)" , std_find_end_pred);
80
83
bm.operator ()<std::list<int >>(" std::find_end(list<int>, pred) (bail 25%)" , std_find_end_pred);
84
+ bm.operator ()<std::forward_list<int >>(" std::find_end(forward_list<int>, pred) (bail 25%)" , std_find_end_pred);
81
85
bm.operator ()<std::vector<int >>(" rng::find_end(vector<int>, pred) (bail 25%)" , ranges_find_end_pred);
82
86
bm.operator ()<std::deque<int >>(" rng::find_end(deque<int>, pred) (bail 25%)" , ranges_find_end_pred);
83
87
bm.operator ()<std::list<int >>(" rng::find_end(list<int>, pred) (bail 25%)" , ranges_find_end_pred);
88
+ bm.operator ()<std::forward_list<int >>(" rng::find_end(forward_list<int>, pred) (bail 25%)" , ranges_find_end_pred);
84
89
}
85
90
86
91
// Benchmark {std,ranges}::find_end where the subsequence is found
@@ -98,7 +103,7 @@ int main(int argc, char** argv) {
98
103
Container subrange (size / 10 , y); // subrange of length 10% of the full range
99
104
100
105
// put the element we're searching for at 90% of the sequence
101
- std::ranges::copy (subrange, std::next (c.begin (), 9 * (c. size ( ) / 10 ) ));
106
+ std::ranges::copy (subrange, std::next (c.begin (), ( 9 * size) / 10 ));
102
107
103
108
for ([[maybe_unused]] auto _ : st) {
104
109
benchmark::DoNotOptimize (c);
@@ -116,17 +121,21 @@ int main(int argc, char** argv) {
116
121
bm.operator ()<std::vector<int >>(" std::find_end(vector<int>) (bail 90%)" , std_find_end);
117
122
bm.operator ()<std::deque<int >>(" std::find_end(deque<int>) (bail 90%)" , std_find_end);
118
123
bm.operator ()<std::list<int >>(" std::find_end(list<int>) (bail 90%)" , std_find_end);
124
+ bm.operator ()<std::forward_list<int >>(" std::find_end(forward_list<int>) (bail 90%)" , std_find_end);
119
125
bm.operator ()<std::vector<int >>(" rng::find_end(vector<int>) (bail 90%)" , std::ranges::find_end);
120
126
bm.operator ()<std::deque<int >>(" rng::find_end(deque<int>) (bail 90%)" , std::ranges::find_end);
121
127
bm.operator ()<std::list<int >>(" rng::find_end(list<int>) (bail 90%)" , std::ranges::find_end);
128
+ bm.operator ()<std::forward_list<int >>(" rng::find_end(forward_list<int>) (bail 90%)" , std::ranges::find_end);
122
129
123
130
// {std,ranges}::find_end(it1, it1, it2, it2, pred)
124
131
bm.operator ()<std::vector<int >>(" std::find_end(vector<int>, pred) (bail 90%)" , std_find_end_pred);
125
132
bm.operator ()<std::deque<int >>(" std::find_end(deque<int>, pred) (bail 90%)" , std_find_end_pred);
126
133
bm.operator ()<std::list<int >>(" std::find_end(list<int>, pred) (bail 90%)" , std_find_end_pred);
134
+ bm.operator ()<std::forward_list<int >>(" std::find_end(forward_list<int>, pred) (bail 90%)" , std_find_end_pred);
127
135
bm.operator ()<std::vector<int >>(" rng::find_end(vector<int>, pred) (bail 90%)" , ranges_find_end_pred);
128
136
bm.operator ()<std::deque<int >>(" rng::find_end(deque<int>, pred) (bail 90%)" , ranges_find_end_pred);
129
137
bm.operator ()<std::list<int >>(" rng::find_end(list<int>, pred) (bail 90%)" , ranges_find_end_pred);
138
+ bm.operator ()<std::forward_list<int >>(" rng::find_end(forward_list<int>, pred) (bail 90%)" , ranges_find_end_pred);
130
139
}
131
140
132
141
benchmark::Initialize (&argc, argv);
0 commit comments