Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Lookup only once in map.
authorArnaud Giersch <arnaud.giersch@univ-fcomte.fr>
Wed, 1 Mar 2023 10:03:20 +0000 (11:03 +0100)
committerArnaud Giersch <arnaud.giersch@univ-fcomte.fr>
Thu, 2 Mar 2023 10:21:59 +0000 (11:21 +0100)
src/kernel/actor/SimcallObserver.hpp

index 71f7e13..1dfc713 100644 (file)
@@ -147,9 +147,10 @@ public:
 template <typename A> static std::string ptr_to_id(A* ptr)
 {
   static std::unordered_map<A*, std::string> map;
-  if (map.find(ptr) == map.end())
-    map.insert(std::make_pair(ptr, std::to_string(map.size() + 1)));
-  return map[ptr];
+  auto [elm, inserted] = map.try_emplace(ptr);
+  if (inserted)
+    elm->second = std::to_string(map.size());
+  return elm->second;
 }
 
 } // namespace simgrid::kernel::actor