From f13a8e34d836731989e674c489092e9dafd3750f Mon Sep 17 00:00:00 2001 From: Vladimir Krivosheev Date: Fri, 18 Nov 2016 15:59:47 +0100 Subject: [PATCH] =?UTF-8?q?DirectoryBasedStorage$MySaveSession.setSerializ?= =?UTF-8?q?edState=20=E2=80=94=20avoid=20O(N^2)=20complexity?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/DirectoryBasedStorage.kt | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/platform/configuration-store-impl/src/DirectoryBasedStorage.kt b/platform/configuration-store-impl/src/DirectoryBasedStorage.kt index 4b2a1519627e..a306d9530cad 100644 --- a/platform/configuration-store-impl/src/DirectoryBasedStorage.kt +++ b/platform/configuration-store-impl/src/DirectoryBasedStorage.kt @@ -32,6 +32,7 @@ import com.intellij.util.containers.SmartHashSet import com.intellij.util.io.systemIndependentPath import com.intellij.util.isEmpty import gnu.trove.THashMap +import gnu.trove.THashSet import org.jdom.Element import java.io.IOException import java.nio.ByteBuffer @@ -127,16 +128,15 @@ open class DirectoryBasedStorage(private val dir: Path, } else { val stateAndFileNameList = storage.splitter.splitState(element!!) + val existingFiles = THashSet(stateAndFileNameList.size) for (pair in stateAndFileNameList) { doSetState(pair.second, pair.first) + existingFiles.add(pair.second) } - outerLoop@ for (key in originalStates.keys()) { - for (pair in stateAndFileNameList) { - if (pair.second == key) { - continue@outerLoop - } + if (existingFiles.contains(key)) { + continue } if (copiedStorageData == null) {