Skip to content

Commit 9886d85

Browse files
fix: replace for cycle with faster (O(n log n)) stable slice sorting algorithm from Go stdlib
Co-authored-by: Cornelius A. Ludmann <[email protected]>
1 parent 0881f7b commit 9886d85

File tree

1 file changed

+3
-9
lines changed

1 file changed

+3
-9
lines changed

pkg/leeway/build.go

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2935,15 +2935,9 @@ func sortPackagesByDependencyDepth(packages []*Package) []*Package {
29352935

29362936
// Sort by depth (descending) - packages with more dependencies first
29372937
// This is a stable sort, so packages with equal depth maintain their order
2938-
for i := 0; i < len(sorted)-1; i++ {
2939-
for j := i + 1; j < len(sorted); j++ {
2940-
depthI := depthCache[sorted[i].FullName()]
2941-
depthJ := depthCache[sorted[j].FullName()]
2942-
if depthJ > depthI {
2943-
sorted[i], sorted[j] = sorted[j], sorted[i]
2944-
}
2945-
}
2946-
}
2938+
sort.SliceStable(sorted, func(i, j int) bool {
2939+
return depthCache[sorted[i].FullName()] > depthCache[sorted[j].FullName()]
2940+
})
29472941

29482942
// Log the sorted order for debugging
29492943
if len(sorted) > 0 {

0 commit comments

Comments
 (0)