|
2 | 2 | #include "TestUtils.h" |
3 | 3 | #include <iostream> |
4 | 4 |
|
5 | | -// #include <flat_set> |
6 | | -// #include <flat_map> |
| 5 | +#if __has_include(<flat_map>) |
| 6 | +# include <flat_set> |
| 7 | +# include <flat_map> |
| 8 | +# define _AX_STL_HAS_FLAT_CONTAINER 1 |
| 9 | +#else |
| 10 | +# define _AX_STL_HAS_FLAT_CONTAINER 0 |
| 11 | +#endif |
7 | 12 |
|
8 | 13 | #include <set> |
9 | 14 | #include <unordered_set> |
|
12 | 17 | #include "axmol/tlx/flat_set.hpp" |
13 | 18 | #include "axmol/tlx/flat_map.hpp" |
14 | 19 |
|
15 | | -template<typename _Tp> |
| 20 | +template <typename _Tp> |
16 | 21 | using my_flat_set = _TLX flat_set<_Tp, std::less<_Tp>, tlx::vector<_Tp>>; |
17 | 22 |
|
18 | 23 | template <typename _Cont1, typename _Cont2> |
@@ -122,25 +127,27 @@ static void run_benchmark() |
122 | 127 | keys[i] = dist(rng); |
123 | 128 | } |
124 | 129 |
|
| 130 | +#if _AX_STL_HAS_FLAT_CONTAINER |
| 131 | + auto s4 = benchmark_set<std::flat_set<int>>("std::flat_set", keys); |
| 132 | + auto m4 = benchmark_map<std::flat_map<int, int>>("std::flat_map", keys); |
| 133 | +#endif |
125 | 134 | auto s1 = benchmark_set<std::set<int>>("std::set", keys); |
126 | 135 | auto s2 = benchmark_set<std::unordered_set<int>>("std::unordered_set", keys); |
127 | 136 | auto s3 = benchmark_set<tlx::hash_set<int>>("tlx::hash_set", keys); |
128 | | - //auto s4 = benchmark_set<std::flat_set<int>>("std::flat_set", keys); |
| 137 | + |
129 | 138 | auto s5 = benchmark_set<tlx::flat_set<int>>("tlx::flat_set", keys); |
130 | 139 | auto s6 = benchmark_set<my_flat_set<int>>("my_flat_set", keys); |
131 | 140 |
|
132 | 141 | auto m1 = benchmark_map<std::map<int, int>>("std::map", keys); |
133 | 142 | auto m2 = benchmark_map<std::unordered_map<int, int>>("std::unordered_map", keys); |
134 | 143 | auto m3 = benchmark_map<tlx::hash_map<int, int>>("tlx::hash_map", keys); |
135 | | - //auto m4 = benchmark_map<std::flat_map<int, int>>("std::flat_map", keys); |
136 | 144 | auto m5 = benchmark_map<tlx::flat_map<int, int>>("tlx::flat_map", keys); |
137 | 145 |
|
138 | 146 | std::sort(keys.begin(), keys.end()); |
139 | 147 | keys.erase(std::unique(keys.begin(), keys.end()), keys.end()); |
140 | 148 |
|
141 | 149 | CHECK(vector_equals(keys, s5.keys())); |
142 | 150 | CHECK(vector_equals(keys, s6.keys())); |
143 | | - // CHECK(keys == m5.keys()); |
144 | 151 | } |
145 | 152 |
|
146 | 153 | TEST_SUITE("tlx/Containers") |
|
0 commit comments