From 5c3b00cd0c9db7cbdce1c6366860a734d811e0d5 Mon Sep 17 00:00:00 2001 From: Andrey Uskov Date: Wed, 23 Oct 2019 19:54:25 +0300 Subject: [PATCH] Improve performance of import in Android Studio Improve performance of dependency tree calculation when module per source set mode is disabled. #KT-34663 Fixed --- .../KotlinGradleProjectResolverExtension.kt | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) 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 7dd5fb5a7cb..7f8b87e0eab 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 @@ -144,6 +144,7 @@ class KotlinGradleProjectResolverExtension : AbstractProjectResolverExtension() ExternalSystemApiUtil.findAll(ideModule, GradleSourceSetData.KEY) } else listOf(ideModule) + var dirtyDependencies = true for (currentModuleNode in moduleNodesToProcess) { val toProcess = ArrayDeque>().apply { add(currentModuleNode) } val discovered = HashSet>().apply { add(currentModuleNode) } @@ -178,14 +179,18 @@ class KotlinGradleProjectResolverExtension : AbstractProjectResolverExtension() addDependency(currentModuleNode, targetMainSourceSet) } } else { + dirtyDependencies = true addDependency(currentModuleNode, targetModule) } } - val dependencies = if (useModulePerSourceSet()) moduleNode.getDependencies(ideProject) else getDependencyModules( - ideModule, - gradleModule.project - ) + val dependencies = if (useModulePerSourceSet()) { + moduleNode.getDependencies(ideProject) + } else { + if (dirtyDependencies) getDependencyModules(ideModule, gradleModule.project).also { + dirtyDependencies = false + } else emptyList() + } // queue only those dependencies that haven't been discovered earlier dependencies.filterTo(toProcess, discovered::add) }