diff options
author | Anton Kudryavtsev <a.kudryavtsev@netris.ru> | 2016-03-03 15:55:47 +0300 |
---|---|---|
committer | Anton Kudryavtsev <a.kudryavtsev@netris.ru> | 2016-03-03 20:21:17 +0000 |
commit | 089ed1525e80b804a1745484995582e29d08129e (patch) | |
tree | 3be2cb9f5894cc7a45e9129e41aae791e7e45a83 /src/network/bearer | |
parent | 37d89fd8fb2c6b41a9dc9bea2f021803e5070866 (diff) |
QtNetwork: optimize container usage
Don't perform lookup twice. Just cache iterator
or position.
Change-Id: I454fd292614dee62167ff248fc3ddec0f79435b0
Reviewed-by: Edward Welbourne <edward.welbourne@theqtcompany.com>
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
Diffstat (limited to 'src/network/bearer')
-rw-r--r-- | src/network/bearer/qnetworkconfigmanager_p.cpp | 25 | ||||
-rw-r--r-- | src/network/bearer/qsharednetworksession.cpp | 5 |
2 files changed, 17 insertions, 13 deletions
diff --git a/src/network/bearer/qnetworkconfigmanager_p.cpp b/src/network/bearer/qnetworkconfigmanager_p.cpp index 3101a98165..232875f43c 100644 --- a/src/network/bearer/qnetworkconfigmanager_p.cpp +++ b/src/network/bearer/qnetworkconfigmanager_p.cpp @@ -52,6 +52,8 @@ #include <QtCore/qbytearray.h> #include <QtCore/qglobal.h> +#include <utility> + #ifndef QT_NO_BEARERMANAGEMENT @@ -263,17 +265,18 @@ QNetworkConfiguration QNetworkConfigurationManagerPrivate::configurationFromIden foreach (QBearerEngine *engine, sessionEngines) { QMutexLocker locker(&engine->mutex); - - if (engine->accessPointConfigurations.contains(identifier)) - item.d = engine->accessPointConfigurations[identifier]; - else if (engine->snapConfigurations.contains(identifier)) - item.d = engine->snapConfigurations[identifier]; - else if (engine->userChoiceConfigurations.contains(identifier)) - item.d = engine->userChoiceConfigurations[identifier]; - else - continue; - - return item; + if (auto ptr = engine->accessPointConfigurations.value(identifier)) { + item.d = std::move(ptr); + break; + } + if (auto ptr = engine->snapConfigurations.value(identifier)) { + item.d = std::move(ptr); + break; + } + if (auto ptr = engine->userChoiceConfigurations.value(identifier)) { + item.d = std::move(ptr); + break; + } } return item; diff --git a/src/network/bearer/qsharednetworksession.cpp b/src/network/bearer/qsharednetworksession.cpp index e04c8cc953..fc01acb8b4 100644 --- a/src/network/bearer/qsharednetworksession.cpp +++ b/src/network/bearer/qsharednetworksession.cpp @@ -65,9 +65,10 @@ static void doDeleteLater(QObject* obj) QSharedPointer<QNetworkSession> QSharedNetworkSessionManager::getSession(const QNetworkConfiguration &config) { QSharedNetworkSessionManager *m(sharedNetworkSessionManager()); + const auto it = m->sessions.constFind(config); //if already have a session, return it - if (m->sessions.contains(config)) { - QSharedPointer<QNetworkSession> p = m->sessions.value(config).toStrongRef(); + if (it != m->sessions.cend()) { + QSharedPointer<QNetworkSession> p = it.value().toStrongRef(); if (!p.isNull()) return p; } |