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:
+9
-4
@@ -144,6 +144,7 @@ class KotlinGradleProjectResolverExtension : AbstractProjectResolverExtension()
|
|||||||
ExternalSystemApiUtil.findAll(ideModule, GradleSourceSetData.KEY)
|
ExternalSystemApiUtil.findAll(ideModule, GradleSourceSetData.KEY)
|
||||||
} else listOf(ideModule)
|
} else listOf(ideModule)
|
||||||
|
|
||||||
|
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) }
|
||||||
val discovered = HashSet<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)
|
addDependency(currentModuleNode, targetMainSourceSet)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
dirtyDependencies = true
|
||||||
addDependency(currentModuleNode, targetModule)
|
addDependency(currentModuleNode, targetModule)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
val dependencies = if (useModulePerSourceSet()) moduleNode.getDependencies(ideProject) else getDependencyModules(
|
val dependencies = if (useModulePerSourceSet()) {
|
||||||
ideModule,
|
moduleNode.getDependencies(ideProject)
|
||||||
gradleModule.project
|
} else {
|
||||||
)
|
if (dirtyDependencies) getDependencyModules(ideModule, gradleModule.project).also {
|
||||||
|
dirtyDependencies = false
|
||||||
|
} else emptyList()
|
||||||
|
}
|
||||||
// queue only those dependencies that haven't been discovered earlier
|
// queue only those dependencies that haven't been discovered earlier
|
||||||
dependencies.filterTo(toProcess, discovered::add)
|
dependencies.filterTo(toProcess, discovered::add)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user