Skip to content

Commit

Permalink
perf: Use AppendMany for SortOrderTransformer/newResMapFromResourceSl…
Browse files Browse the repository at this point in the history
…ice/appendAll

Append in a loop is very expensive, O(N*M). By using AppendMany we get closer to O(N+M)
instead.
  • Loading branch information
chlunde committed Apr 16, 2024
1 parent e06a969 commit 0fe5421
Show file tree
Hide file tree
Showing 3 changed files with 6 additions and 18 deletions.
8 changes: 3 additions & 5 deletions api/internal/builtins/SortOrderTransformer.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

9 changes: 2 additions & 7 deletions api/resmap/factory.go
Original file line number Diff line number Diff line change
Expand Up @@ -126,13 +126,8 @@ func (rmF *Factory) FromSecretArgs(
func newResMapFromResourceSlice(
resources []*resource.Resource) (ResMap, error) {
result := New()
for _, res := range resources {
err := result.Append(res)
if err != nil {
return nil, err
}
}
return result, nil
err := result.AppendMany(resources...)
return result, err
}

// NewResMapFromRNodeSlice returns a ResMap from a slice of RNodes
Expand Down
7 changes: 1 addition & 6 deletions api/resmap/reswrangler.go
Original file line number Diff line number Diff line change
Expand Up @@ -485,12 +485,7 @@ func (m *resWrangler) AppendAll(other ResMap) error {

// appendAll appends all the resources, error on Id collision.
func (m *resWrangler) appendAll(list []*resource.Resource) error {
for _, res := range list {
if err := m.Append(res); err != nil {
return err
}
}
return nil
return m.AppendMany(list...)
}

// AbsorbAll implements ResMap.
Expand Down

0 comments on commit 0fe5421

Please sign in to comment.