]> cloud.milkyroute.net Git - dolphin.git/commitdiff
Use the QMap iterator instead of foreach(key, map.keys()) in UpdateItemStatesThread...
authorEmmanuel Pescosta <emmanuelpescosta099@gmail.com>
Wed, 15 Jan 2014 19:27:20 +0000 (20:27 +0100)
committerEmmanuel Pescosta <emmanuelpescosta099@gmail.com>
Wed, 15 Jan 2014 19:27:20 +0000 (20:27 +0100)
and in VersionControlObserver::slotThreadFinished().

So we get O(n) complexity instead of O(n*logn), and O(1) memory instead of O(n).
Thanks to Thiago Macieira for providing this information.

FIXED-IN: 4.13
REVIEW: 115018

src/views/versioncontrol/updateitemstatesthread.cpp
src/views/versioncontrol/versioncontrolobserver.cpp

index 6be07d361a98a865c9f1f00ea8921099653bb5d1..db50aa2e8bbae35e05c6f8c0d0c6fbfb8c7608b0 100644 (file)
@@ -50,9 +50,10 @@ void UpdateItemStatesThread::run()
     m_retrievedItems = false;
 
     QMutexLocker pluginLocker(m_globalPluginMutex);
-    foreach (const QString& directory, m_itemStates.keys()) {
-        if (m_plugin->beginRetrieval(directory)) {
-            QVector<VersionControlObserver::ItemState>& items = m_itemStates[directory];
+    QMap<QString, QVector<VersionControlObserver::ItemState> >::iterator it = m_itemStates.begin();
+    for (; it != m_itemStates.end(); ++it) {
+        if (m_plugin->beginRetrieval(it.key())) {
+            QVector<VersionControlObserver::ItemState>& items = it.value();
             const int count = items.count();
 
             KVersionControlPlugin2* pluginV2 = qobject_cast<KVersionControlPlugin2*>(m_plugin);
index 4d939ee0dffdd2e7f5c2b194cc5cb8d0ca8d5b19..c542542ee1277a33835d9435528969fd1bc61a82 100644 (file)
@@ -205,8 +205,9 @@ void VersionControlObserver::slotThreadFinished()
     }
 
     const QMap<QString, QVector<ItemState> >& itemStates = thread->itemStates();
-    foreach (const QString& directory, itemStates.keys()) {
-        const QVector<ItemState>& items = itemStates.value(directory);
+    QMap<QString, QVector<ItemState> >::const_iterator it = itemStates.constBegin();
+    for (; it != itemStates.constEnd(); ++it) {
+        const QVector<ItemState>& items = it.value();
 
         foreach (const ItemState& item, items) {
             QHash<QByteArray, QVariant> values;