Skip to content

Commit 058da5e

Browse files
committed
Use range constructor for vector instead of calling reserve and then emplace_back in a loop
1 parent 90763c2 commit 058da5e

File tree

1 file changed

+7
-11
lines changed

1 file changed

+7
-11
lines changed

source/containers/test/map_benchmark.cpp

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,9 @@
55

66
#include <operators/forward.hpp>
77

8+
import containers.algorithms.generate;
89
import containers.algorithms.keyed_insert;
910
import containers.begin_end;
10-
import containers.emplace_back;
1111
import containers.extract_key_to_less;
1212
import containers.flat_map;
1313
import containers.map_value_type;
@@ -130,16 +130,12 @@ auto ignore(auto &&) -> void {
130130

131131
template<std::size_t key_size, std::size_t value_size>
132132
void test_performance(std::size_t const loop_count) {
133-
auto const generator = [](std::size_t size) {
134-
static std::mt19937 engine(0);
135-
static std::uniform_int_distribution<std::uint32_t> distribution;
136-
using container_type = containers::vector<value_type<Thing<key_size>, Thing<value_size>>>;
137-
auto source = container_type();
138-
source.reserve(bounded::check_in_range<containers::range_size_t<container_type>>(bounded::integer(size)));
139-
for (std::size_t n = 0; n != size; ++n) {
140-
::containers::emplace_back(source, distribution(engine), distribution(engine));
141-
}
142-
return source;
133+
auto engine = std::mt19937(0);
134+
auto distribution = std::uniform_int_distribution<std::uint32_t>();
135+
auto const generator = [&](std::size_t const size) {
136+
return containers::vector(containers::generate_n(size, [&] {
137+
return value_type<Thing<key_size>, Thing<value_size>>(distribution(engine), distribution(engine));
138+
}));
143139
};
144140

145141
auto const source = generator(loop_count);

0 commit comments

Comments
 (0)