16
16
#include < vector>
17
17
18
18
#include < benchmark/benchmark.h>
19
+ #include " ../../GenerateInput.h"
19
20
20
21
int main (int argc, char ** argv) {
21
22
// Benchmark ranges::contains where we bail out early (after visiting 25% of the elements).
@@ -25,14 +26,18 @@ int main(int argc, char** argv) {
25
26
name,
26
27
[](auto & st) {
27
28
std::size_t const size = st.range (0 );
28
- Container c (size, 1 );
29
- *std::next (c.begin (), size / 4 ) = 42 ; // bail out after checking 25% of values
29
+ using ValueType = typename Container::value_type;
30
+ ValueType x = Generate<ValueType>::random ();
31
+ ValueType y = random_different_from ({x});
32
+ Container c (size, x);
33
+ *std::next (c.begin (), size / 4 ) = y; // bail out after checking 25% of values
30
34
auto first = c.begin ();
31
35
auto last = c.end ();
32
36
33
37
for (auto _ : st) {
34
38
benchmark::DoNotOptimize (c);
35
- auto result = std::ranges::contains (first, last, 42 );
39
+ benchmark::DoNotOptimize (y);
40
+ auto result = std::ranges::contains (first, last, y);
36
41
benchmark::DoNotOptimize (result);
37
42
}
38
43
})
@@ -53,13 +58,17 @@ int main(int argc, char** argv) {
53
58
name,
54
59
[](auto & st) {
55
60
std::size_t const size = st.range (0 );
56
- Container c (size, 1 );
61
+ using ValueType = typename Container::value_type;
62
+ ValueType x = Generate<ValueType>::random ();
63
+ ValueType y = random_different_from ({x});
64
+ Container c (size, x);
57
65
auto first = c.begin ();
58
66
auto last = c.end ();
59
67
60
68
for (auto _ : st) {
61
69
benchmark::DoNotOptimize (c);
62
- auto result = std::ranges::contains (first, last, 42 );
70
+ benchmark::DoNotOptimize (y);
71
+ auto result = std::ranges::contains (first, last, y);
63
72
benchmark::DoNotOptimize (result);
64
73
}
65
74
})
0 commit comments