K2: Optimize AbstractFirDeserializedSymbolProvider
Avoid filling caches with keys that are definitely empty (if it's cheap to compute that), to decrease the size of backing maps. The strategy is pre-computing the sets of names that might be met. NB: the size of the sets is way fewer than a size of all queried names.
This commit is contained in:
committed by
Space Team
parent
e2e87bd107
commit
58c1b5dd1f
+9
@@ -52,6 +52,15 @@ class IncrementalPackagePartProvider(
|
||||
parent.findPackageParts(packageFqName)).distinct()
|
||||
}
|
||||
|
||||
private val allPackageNames: Set<String> by lazy {
|
||||
buildSet {
|
||||
moduleMappings.flatMapTo(this@buildSet) { it.packageFqName2Parts.keys }
|
||||
addAll(parent.computePackageSetWithNonClassDeclarations())
|
||||
}
|
||||
}
|
||||
|
||||
override fun computePackageSetWithNonClassDeclarations(): Set<String> = allPackageNames
|
||||
|
||||
override fun getAnnotationsOnBinaryModule(moduleName: String): List<ClassId> {
|
||||
return parent.getAnnotationsOnBinaryModule(moduleName)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user