perf: Speedup coins.Sort() when coins is of length 1 (#18875)

This commit is contained in:
Dev Ojha
2023-12-23 10:15:25 +00:00
committed by GitHub
parent 44be02175e
commit bd04173012
2 changed files with 7 additions and 1 deletions
+6 -1
View File
@@ -823,7 +823,12 @@ var _ sort.Interface = Coins{}
// Sort is a helper function to sort the set of coins in-place
func (coins Coins) Sort() Coins {
sort.Sort(coins)
// sort.Sort(coins) does a costly runtime copy as part of `runtime.convTSlice`
// So we avoid this heap allocation if len(coins) <= 1. In the future, we should hopefully find
// a strategy to always avoid this.
if len(coins) > 1 {
sort.Sort(coins)
}
return coins
}