Optimize getJarJarRuleText

getJarJarRuleText accounted for 10% of all allocations in Soong totalling
10 GB due to repeated string growth.  Use a StringBuilder instead.

Test: builds
Change-Id: I4bce338d161cb2f9c0aba1036ced55d2e8ee6b14
This commit is contained in:
Colin Cross 2025-02-11 13:17:53 -08:00 committed by Luca Stefani
parent 3e8d483be0
commit 0cec59e1d9

View file

@ -2933,14 +2933,18 @@ func (module *Module) collectJarJarRules(ctx android.ModuleContext) *JarJarProvi
// Get the jarjar rule text for a given provider for the fully resolved rules. Classes that map
// to "" won't be in this list because they shouldn't be renamed yet.
func getJarJarRuleText(provider *JarJarProviderData) string {
result := ""
result := strings.Builder{}
for _, orig := range android.SortedKeys(provider.Rename) {
renamed := provider.Rename[orig]
if renamed != "" {
result += "rule " + orig + " " + renamed + "\n"
result.WriteString("rule ")
result.WriteString(orig)
result.WriteString(" ")
result.WriteString(renamed)
result.WriteString("\n")
}
}
return result
return result.String()
}
// Repackage the flags if the jarjar rule txt for the flags is generated