From 02c31a711cd2d1a14bbbd6171d34749f498f0e16 Mon Sep 17 00:00:00 2001 From: Nikita Skvortsov Date: Thu, 1 Oct 2020 13:33:44 +0300 Subject: [PATCH] Avoid iterating over all idea modules. Use hash table to quickly lookup idea module by gradle project path --- .../idea/configuration/KotlinGradleProjectResolverExtension.kt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/KotlinGradleProjectResolverExtension.kt b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/KotlinGradleProjectResolverExtension.kt index 5c747d7d3b5..3877ffb7735 100644 --- a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/KotlinGradleProjectResolverExtension.kt +++ b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/KotlinGradleProjectResolverExtension.kt @@ -145,6 +145,7 @@ class KotlinGradleProjectResolverExtension : AbstractProjectResolverExtension() ExternalSystemApiUtil.findAll(ideModule, GradleSourceSetData.KEY) } else listOf(ideModule) + val ideaModulesByGradlePaths = gradleModule.project.modules.groupBy { it.gradleProject.path } var dirtyDependencies = true for (currentModuleNode in moduleNodesToProcess) { val toProcess = ArrayDeque>().apply { add(currentModuleNode) } @@ -158,7 +159,7 @@ class KotlinGradleProjectResolverExtension : AbstractProjectResolverExtension() } else moduleNode val ideaModule = if (moduleNodeForGradleModel != ideModule) { - gradleModule.project.modules.firstOrNull { it.gradleProject.path == moduleNodeForGradleModel?.data?.id } + moduleNodeForGradleModel?.data?.id?.let { ideaModulesByGradlePaths[it]?.firstOrNull() } } else gradleModule val implementsModuleIds = resolverCtx.getExtraProject(ideaModule, KotlinGradleModel::class.java)?.implements