Use string.Builder

with 4000X clones of adbd, bp2build.Codegen time goes from 36s to 7s

Test: m bp2build and verify same BUILD.bazel files
Bug: 292281398
Change-Id: Ibd3b328a917fe5d1bdad67c67116da336f9033cb
This commit is contained in:
usta
2023-08-08 00:29:08 -04:00
committed by Usta (Tsering) Shrestha
parent 38a72e717b
commit da2a211bbd

View File

@@ -29,6 +29,7 @@ import (
"android/soong/bazel"
"android/soong/starlark_fmt"
"android/soong/ui/metrics/bp2build_metrics_proto"
"github.com/google/blueprint"
"github.com/google/blueprint/bootstrap"
"github.com/google/blueprint/proptools"
@@ -94,16 +95,16 @@ func (targets BazelTargets) sort() {
// statements (use LoadStatements for that), since the targets are usually not
// adjacent to the load statements at the top of the BUILD file.
func (targets BazelTargets) String() string {
var res string
var res strings.Builder
for i, target := range targets {
if target.ruleClass != "package" {
res += target.content
res.WriteString(target.content)
}
if i != len(targets)-1 {
res += "\n\n"
res.WriteString("\n\n")
}
}
return res
return res.String()
}
// LoadStatements return the string representation of the sorted and deduplicated