99#include < algorithm>
1010#include < benchmark/benchmark.h>
1111#include < cstring>
12+ #include < deque>
1213#include < random>
1314#include < vector>
1415
15- template <class T >
16+ template <class Container >
1617static void bm_find (benchmark::State& state) {
17- std::vector<T> vec1 (state.range (), ' 1' );
18+ using T = Container::value_type;
19+
20+ Container vec1 (state.range (), ' 1' );
1821 std::mt19937_64 rng (std::random_device{}());
1922
2023 for (auto _ : state) {
@@ -25,13 +28,18 @@ static void bm_find(benchmark::State& state) {
2528 vec1[idx] = ' 1' ;
2629 }
2730}
28- BENCHMARK (bm_find<char >)->DenseRange(1 , 8 )->Range(16 , 1 << 20 );
29- BENCHMARK (bm_find<short >)->DenseRange(1 , 8 )->Range(16 , 1 << 20 );
30- BENCHMARK (bm_find<int >)->DenseRange(1 , 8 )->Range(16 , 1 << 20 );
31+ BENCHMARK (bm_find<std::vector<char >>)->DenseRange(1 , 8 )->Range(16 , 1 << 20 );
32+ BENCHMARK (bm_find<std::vector<short >>)->DenseRange(1 , 8 )->Range(16 , 1 << 20 );
33+ BENCHMARK (bm_find<std::vector<int >>)->DenseRange(1 , 8 )->Range(16 , 1 << 20 );
34+ BENCHMARK (bm_find<std::deque<char >>)->DenseRange(1 , 8 )->Range(16 , 1 << 20 );
35+ BENCHMARK (bm_find<std::deque<short >>)->DenseRange(1 , 8 )->Range(16 , 1 << 20 );
36+ BENCHMARK (bm_find<std::deque<int >>)->DenseRange(1 , 8 )->Range(16 , 1 << 20 );
3137
32- template <class T >
38+ template <class Container >
3339static void bm_ranges_find (benchmark::State& state) {
34- std::vector<T> vec1 (state.range (), ' 1' );
40+ using T = Container::value_type;
41+
42+ Container vec1 (state.range (), ' 1' );
3543 std::mt19937_64 rng (std::random_device{}());
3644
3745 for (auto _ : state) {
@@ -42,9 +50,12 @@ static void bm_ranges_find(benchmark::State& state) {
4250 vec1[idx] = ' 1' ;
4351 }
4452}
45- BENCHMARK (bm_ranges_find<char >)->DenseRange(1 , 8 )->Range(16 , 1 << 20 );
46- BENCHMARK (bm_ranges_find<short >)->DenseRange(1 , 8 )->Range(16 , 1 << 20 );
47- BENCHMARK (bm_ranges_find<int >)->DenseRange(1 , 8 )->Range(16 , 1 << 20 );
53+ BENCHMARK (bm_ranges_find<std::vector<char >>)->DenseRange(1 , 8 )->Range(16 , 1 << 20 );
54+ BENCHMARK (bm_ranges_find<std::vector<short >>)->DenseRange(1 , 8 )->Range(16 , 1 << 20 );
55+ BENCHMARK (bm_ranges_find<std::vector<int >>)->DenseRange(1 , 8 )->Range(16 , 1 << 20 );
56+ BENCHMARK (bm_ranges_find<std::deque<char >>)->DenseRange(1 , 8 )->Range(16 , 1 << 20 );
57+ BENCHMARK (bm_ranges_find<std::deque<short >>)->DenseRange(1 , 8 )->Range(16 , 1 << 20 );
58+ BENCHMARK (bm_ranges_find<std::deque<int >>)->DenseRange(1 , 8 )->Range(16 , 1 << 20 );
4859
4960static void bm_vector_bool_find (benchmark::State& state) {
5061 std::vector<bool > vec1 (state.range (), false );
0 commit comments