From d49828f291fa53350cc8a5c3f027059fc64d961a Mon Sep 17 00:00:00 2001 From: Roy Jacobson Date: Sun, 21 Aug 2022 21:24:23 +0300 Subject: [PATCH] Replace mapping.emplace(K, V) with call to mapping.find(K) and branching to reduce the amount of allocations. --- include/cereal/details/helpers.hpp | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/include/cereal/details/helpers.hpp b/include/cereal/details/helpers.hpp index 8dafb8ec..48e93f50 100644 --- a/include/cereal/details/helpers.hpp +++ b/include/cereal/details/helpers.hpp @@ -412,8 +412,13 @@ namespace cereal std::uint32_t find( std::size_t hash, std::uint32_t version ) { - const auto result = mapping.emplace( hash, version ); - return result.first->second; + auto it = mapping.find(hash); + if (it == mapping.end()) { + mapping.emplace(hash, version); + return version; + } + else + return it->second; } }; // struct Versions } // namespace detail