summaryrefslogtreecommitdiff
path: root/configmgr
diff options
context:
space:
mode:
authorNoel Grandin <noel.grandin@collabora.co.uk>2019-04-18 15:13:19 +0200
committerNoel Grandin <noel.grandin@collabora.co.uk>2019-04-19 13:19:31 +0200
commit1a5b12aa5da2c718848d3cc5d9bce7bfcdeacf54 (patch)
tree25044edc2afb99073ba6bef8d181dadbb6a53467 /configmgr
parenteaaaad0e21edb27edaa865eee03696f007cd8010 (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.cxx18
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;
}