From bc5f6cf45dfd006fe1747f748339a6ed227d28d7 Mon Sep 17 00:00:00 2001 From: Benny Halevy Date: Sun, 24 Jul 2022 15:02:24 +0300 Subject: [PATCH] storage_service: reserve space in get_range_to_address_map and friends To reduce the chance of reallocation. Signed-off-by: Benny Halevy --- service/storage_service.cc | 3 +++ 1 file changed, 3 insertions(+) diff --git a/service/storage_service.cc b/service/storage_service.cc index 28152d3f5c..b4f34bd8b9 100644 --- a/service/storage_service.cc +++ b/service/storage_service.cc @@ -760,6 +760,7 @@ storage_service::get_range_to_address_map_in_local_dc( locator::effective_replication_map_ptr erm) const { auto orig_map = co_await get_range_to_address_map(erm, co_await get_tokens_in_local_dc(*erm->get_token_metadata_ptr())); std::unordered_map filtered_map; + filtered_map.reserve(orig_map.size()); for (auto entry : orig_map) { auto& addresses = filtered_map[entry.first]; addresses.reserve(entry.second.size()); @@ -3110,6 +3111,7 @@ storage_service::construct_range_to_endpoint_map( locator::effective_replication_map_ptr erm, const dht::token_range_vector& ranges) const { std::unordered_map res; + res.reserve(ranges.size()); for (auto r : ranges) { res[r] = erm->get_natural_endpoints( r.end() ? r.end()->value() : dht::maximum_token()); @@ -3374,6 +3376,7 @@ storage_service::get_all_ranges(const std::vector& sorted_tokens) const { co_return dht::token_range_vector(); int size = sorted_tokens.size(); dht::token_range_vector ranges; + ranges.reserve(size); ranges.push_back(dht::token_range::make_ending_with(range_bound(sorted_tokens[0], true))); co_await coroutine::maybe_yield(); for (int i = 1; i < size; ++i) {