From 22c7f07bae03872b2ee4e72e3ed7fbd910485bda Mon Sep 17 00:00:00 2001 From: Weizhen Wang Date: Sat, 19 Aug 2023 17:40:17 +0800 Subject: [PATCH] *: avoid sort Signed-off-by: Weizhen Wang --- statistics/cmsketch.go | 7 +------ statistics/cmsketch_test.go | 2 +- statistics/handle/handle.go | 2 +- 3 files changed, 3 insertions(+), 8 deletions(-) diff --git a/statistics/cmsketch.go b/statistics/cmsketch.go index 07d2c8bc98fc5..f94d00ca08fa5 100644 --- a/statistics/cmsketch.go +++ b/statistics/cmsketch.go @@ -934,12 +934,7 @@ func GetMergedTopNFromSortedSlice(sorted []TopNMeta, n uint32) (*TopN, []TopNMet } func getMergedTopNFromSortedSlice(sorted []TopNMeta, n uint32) (*TopN, []TopNMeta) { - slices.SortFunc(sorted, func(i, j TopNMeta) int { - if i.Count != j.Count { - return cmp.Compare(j.Count, i.Count) - } - return bytes.Compare(i.Encoded, j.Encoded) - }) + SortTopnMeta(sorted) n = mathutil.Min(uint32(len(sorted)), n) var finalTopN TopN diff --git a/statistics/cmsketch_test.go b/statistics/cmsketch_test.go index 4db5a4ccc1f38..8d165b7b54d68 100644 --- a/statistics/cmsketch_test.go +++ b/statistics/cmsketch_test.go @@ -347,7 +347,7 @@ func TestSortTopnMeta(t *testing.T) { Encoded: []byte("b"), Count: 2, }} - SortTopnMeta(&data) + SortTopnMeta(data) require.Equal(t, uint64(2), data[0].Count) } diff --git a/statistics/handle/handle.go b/statistics/handle/handle.go index 2fd0e6e210512..17402392fb548 100644 --- a/statistics/handle/handle.go +++ b/statistics/handle/handle.go @@ -972,7 +972,7 @@ func MergeGlobalStatsTopNByConcurrency(mergeConcurrency, mergeBatchSize int, wra globalTopN, popedTopn := statistics.GetMergedTopNFromSortedSlice(sorted, n) result := append(leftTopn, popedTopn...) - statistics.SortTopnMeta(&result) + statistics.SortTopnMeta(result) return globalTopN, result, wrapper.AllHg, nil }