perf: Use a map to merge integrations classes

This commit is contained in:
oSumAtrIX 2023-10-07 01:52:21 +02:00
parent 444dee5a16
commit 6059d3ca26
No known key found for this signature in database
GPG key ID: A9B3094ACDB604B4

View file

@ -108,7 +108,8 @@ class BytecodeContext internal constructor(private val options: PatcherOptions)
logger.info("Merging integrations")
// TODO: Multi-thread this.
val classMap = classes.associateBy { it.type }
this@Integrations.forEach { integrations ->
MultiDexIO.readDexFile(
true,
@ -116,8 +117,8 @@ class BytecodeContext internal constructor(private val options: PatcherOptions)
null,
null
).classes.forEach classDef@{ classDef ->
val existingClass = classes.find { it.type == classDef.type } ?: run {
logger.fine("Merging $classDef")
val existingClass = classMap[classDef.type] ?: run {
logger.fine("Adding $classDef")
classes.add(classDef)
return@classDef
}
@ -131,7 +132,6 @@ class BytecodeContext internal constructor(private val options: PatcherOptions)
}
}
}
clear()
}
}