Avoid iterating over all idea modules.

Use hash table to quickly lookup idea module by gradle project path
This commit is contained in:
Nikita Skvortsov
2020-10-01 13:33:44 +03:00
committed by Vladimir Dolzhenko
parent 713f6e1ed3
commit 02c31a711c
@@ -145,6 +145,7 @@ class KotlinGradleProjectResolverExtension : AbstractProjectResolverExtension()
ExternalSystemApiUtil.findAll(ideModule, GradleSourceSetData.KEY) ExternalSystemApiUtil.findAll(ideModule, GradleSourceSetData.KEY)
} else listOf(ideModule) } else listOf(ideModule)
val ideaModulesByGradlePaths = gradleModule.project.modules.groupBy { it.gradleProject.path }
var dirtyDependencies = true var dirtyDependencies = true
for (currentModuleNode in moduleNodesToProcess) { for (currentModuleNode in moduleNodesToProcess) {
val toProcess = ArrayDeque<DataNode<out ModuleData>>().apply { add(currentModuleNode) } val toProcess = ArrayDeque<DataNode<out ModuleData>>().apply { add(currentModuleNode) }
@@ -158,7 +159,7 @@ class KotlinGradleProjectResolverExtension : AbstractProjectResolverExtension()
} else moduleNode } else moduleNode
val ideaModule = if (moduleNodeForGradleModel != ideModule) { val ideaModule = if (moduleNodeForGradleModel != ideModule) {
gradleModule.project.modules.firstOrNull { it.gradleProject.path == moduleNodeForGradleModel?.data?.id } moduleNodeForGradleModel?.data?.id?.let { ideaModulesByGradlePaths[it]?.firstOrNull() }
} else gradleModule } else gradleModule
val implementsModuleIds = resolverCtx.getExtraProject(ideaModule, KotlinGradleModel::class.java)?.implements val implementsModuleIds = resolverCtx.getExtraProject(ideaModule, KotlinGradleModel::class.java)?.implements