From cd51264940b76719d71d46d25b885f1132d8bc27 Mon Sep 17 00:00:00 2001 From: "Denis.Zharkov" Date: Thu, 29 Jul 2021 18:36:17 +0300 Subject: [PATCH] Avoid using FactoryMap at FastJarHandler It has quite a slow entrySet implementation --- .../kotlin/cli/jvm/compiler/jarfs/FastJarHandler.kt | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/jarfs/FastJarHandler.kt b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/jarfs/FastJarHandler.kt index 812fd04401a..90551048331 100644 --- a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/jarfs/FastJarHandler.kt +++ b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/jarfs/FastJarHandler.kt @@ -6,7 +6,6 @@ package org.jetbrains.kotlin.cli.jvm.compiler.jarfs import com.intellij.openapi.util.io.FileUtil import com.intellij.openapi.vfs.VirtualFile -import com.intellij.util.containers.FactoryMap import java.io.File import java.io.FileNotFoundException import java.io.RandomAccessFile @@ -32,11 +31,10 @@ class FastJarHandler(val fileSystem: FastJarFileSystem, path: String) { } } - val childrenMap = FactoryMap.create> { ArrayList() } - + val childrenMap = HashMap>(ourEntryMap.size) myRoot = FastJarVirtualFile(this, "", -1, DEFAULT_TIMESTAMP, null) - val filesByRelativePath = mutableMapOf() + val filesByRelativePath = HashMap(ourEntryMap.size) filesByRelativePath[""] = myRoot for (info in ourEntryMap.values) { @@ -44,7 +42,8 @@ class FastJarHandler(val fileSystem: FastJarFileSystem, path: String) { } for (child in filesByRelativePath.values) { - child.parent?.let(childrenMap::get)?.add(child) + val parent = child.parent as? FastJarVirtualFile ?: continue + childrenMap.getOrPut(parent) { mutableListOf() }.add(child) } for ((key, childList) in childrenMap) {