From a0fb5523f9a07e2dbc06d1c13d1a0733215b660e Mon Sep 17 00:00:00 2001 From: Casey Bodley Date: Wed, 30 May 2018 09:15:57 -0400 Subject: [PATCH] rgw: ObjectCache::put avoids separate find + insert Signed-off-by: Casey Bodley --- src/rgw/rgw_cache.cc | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/src/rgw/rgw_cache.cc b/src/rgw/rgw_cache.cc index b43d5e5c9f73d..797e22bc3dc4b 100644 --- a/src/rgw/rgw_cache.cc +++ b/src/rgw/rgw_cache.cc @@ -124,14 +124,12 @@ void ObjectCache::put(const string& name, ObjectCacheInfo& info, rgw_cache_entry ldout(cct, 10) << "cache put: name=" << name << " info.flags=0x" << std::hex << info.flags << std::dec << dendl; - auto iter = cache_map.find(name); - if (iter == cache_map.end()) { - ObjectCacheEntry entry; + + auto [iter, inserted] = cache_map.emplace(name, ObjectCacheEntry{}); + ObjectCacheEntry& entry = iter->second; + if (inserted) { entry.lru_iter = lru.end(); - cache_map.insert(pair(name, entry)); - iter = cache_map.find(name); } - ObjectCacheEntry& entry = iter->second; ObjectCacheInfo& target = entry.info; invalidate_lru(entry); -- 2.39.5