release: avoid rebuilding kind order map during sorting

Signed-off-by: Raushan Kumar <raus7n@gmail.com>
pull/32386/head
Raushan Kumar 3 months ago
parent 68977ec0b5
commit f3124766f0

@ -117,9 +117,26 @@ var UninstallOrder KindSortOrder = []string{
// sort manifests by kind.
//
// Results are sorted by 'ordering', keeping order of items with equal kind/priority
func buildKindOrderMap(o KindSortOrder) map[string]int {
ordering := make(map[string]int, len(o))
for i, kind := range o {
ordering[kind] = i
}
return ordering
}
func sortManifestsByKind(manifests []Manifest, ordering KindSortOrder) []Manifest {
orderMap := buildKindOrderMap(ordering)
sort.SliceStable(manifests, func(i, j int) bool {
return lessByKind(manifests[i], manifests[j], manifests[i].Head.Kind, manifests[j].Head.Kind, ordering)
return lessByKind(
manifests[i],
manifests[j],
manifests[i].Head.Kind,
manifests[j].Head.Kind,
orderMap,
)
})
return manifests
@ -129,19 +146,23 @@ func sortManifestsByKind(manifests []Manifest, ordering KindSortOrder) []Manifes
//
// Results are sorted by 'ordering', keeping order of items with equal kind/priority
func sortHooksByKind(hooks []*release.Hook, ordering KindSortOrder) []*release.Hook {
orderMap := buildKindOrderMap(ordering)
h := hooks
sort.SliceStable(h, func(i, j int) bool {
return lessByKind(h[i], h[j], h[i].Kind, h[j].Kind, ordering)
return lessByKind(
h[i],
h[j],
h[i].Kind,
h[j].Kind,
orderMap,
)
})
return h
}
func lessByKind(_ any, _ any, kindA string, kindB string, o KindSortOrder) bool {
ordering := make(map[string]int, len(o))
for v, k := range o {
ordering[k] = v
}
func lessByKind(_ any, _ any, kindA string, kindB string, ordering map[string]int) bool {
first, aok := ordering[kindA]
second, bok := ordering[kindB]

@ -114,12 +114,28 @@ var UninstallOrder KindSortOrder = []string{
"PriorityClass",
}
func buildKindOrderMap(o KindSortOrder) map[string]int {
ordering := make(map[string]int, len(o))
for i, kind := range o {
ordering[kind] = i
}
return ordering
}
// sort manifests by kind.
//
// Results are sorted by 'ordering', keeping order of items with equal kind/priority
func sortManifestsByKind(manifests []Manifest, ordering KindSortOrder) []Manifest {
orderMap := buildKindOrderMap(ordering)
sort.SliceStable(manifests, func(i, j int) bool {
return lessByKind(manifests[i], manifests[j], manifests[i].Head.Kind, manifests[j].Head.Kind, ordering)
return lessByKind(
manifests[i],
manifests[j],
manifests[i].Head.Kind,
manifests[j].Head.Kind,
orderMap,
)
})
return manifests
@ -129,19 +145,23 @@ func sortManifestsByKind(manifests []Manifest, ordering KindSortOrder) []Manifes
//
// Results are sorted by 'ordering', keeping order of items with equal kind/priority
func sortHooksByKind(hooks []*release.Hook, ordering KindSortOrder) []*release.Hook {
orderMap := buildKindOrderMap(ordering)
h := hooks
sort.SliceStable(h, func(i, j int) bool {
return lessByKind(h[i], h[j], h[i].Kind, h[j].Kind, ordering)
return lessByKind(
h[i],
h[j],
h[i].Kind,
h[j].Kind,
orderMap,
)
})
return h
}
func lessByKind(_ any, _ any, kindA string, kindB string, o KindSortOrder) bool {
ordering := make(map[string]int, len(o))
for v, k := range o {
ordering[k] = v
}
func lessByKind(_ any, _ any, kindA string, kindB string, ordering map[string]int) bool {
first, aok := ordering[kindA]
second, bok := ordering[kindB]

Loading…
Cancel
Save