diff options
author | Noel Grandin <noel.grandin@collabora.co.uk> | 2019-04-18 15:13:19 +0200 |
---|---|---|
committer | Noel Grandin <noel.grandin@collabora.co.uk> | 2019-04-19 13:19:31 +0200 |
commit | 1a5b12aa5da2c718848d3cc5d9bce7bfcdeacf54 (patch) | |
tree | 25044edc2afb99073ba6bef8d181dadbb6a53467 /configmgr | |
parent | eaaaad0e21edb27edaa865eee03696f007cd8010 (diff) |
optimise find/insert pattern
if we're doing a find/insert on a set or a map, it is better to just do
a conditional insert/emplace operation than triggering two lookups.
Change-Id: I80da5097f5a89fe30fa348ce5b6e747c34287a8d
Reviewed-on: https://gerrit.libreoffice.org/70937
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
Diffstat (limited to 'configmgr')
-rw-r--r-- | configmgr/source/xcsparser.cxx | 18 |
1 files changed, 6 insertions, 12 deletions
diff --git a/configmgr/source/xcsparser.cxx b/configmgr/source/xcsparser.cxx index 411da6ca7915..e7bed9cc02e4 100644 --- a/configmgr/source/xcsparser.cxx +++ b/configmgr/source/xcsparser.cxx @@ -267,24 +267,18 @@ void XcsParser::endElement(xmlreader::XmlReader const & reader) { switch (state_) { case STATE_TEMPLATES: { - NodeMap::iterator i(data_.templates.find(top.name)); - if (i == data_.templates.end()) { - data_.templates.insert( - NodeMap::value_type(top.name, top.node)); - } else { - merge(i->second, top.node); + auto itPair = data_.templates.insert({top.name, top.node}); + if (!itPair.second) { + merge(itPair.first->second, top.node); } } break; case STATE_COMPONENT: { NodeMap & components = data_.getComponents(); - NodeMap::iterator i(components.find(top.name)); - if (i == components.end()) { - components.insert( - NodeMap::value_type(top.name, top.node)); - } else { - merge(i->second, top.node); + auto itPair = components.insert({top.name, top.node}); + if (!itPair.second) { + merge(itPair.first->second, top.node); } state_ = STATE_COMPONENT_DONE; } |