Improve performance of import in Android Studio

Improve performance of dependency tree calculation when module per
source set mode is disabled.
#KT-34663 Fixed
This commit is contained in:
Andrey Uskov
2019-10-23 19:54:25 +03:00
parent e8e04ca98e
commit 5c3b00cd0c
@@ -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<DataNode<out ModuleData>>().apply { add(currentModuleNode) }
val discovered = HashSet<DataNode<out ModuleData>>().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)
}