From b8b00df4311f7f9dfd36203fddb35d57462e64e2 Mon Sep 17 00:00:00 2001 From: zikcheng Date: Mon, 23 Oct 2023 18:49:24 +0800 Subject: [PATCH] runtime/select.go optimize heapsort for lockorder Heapsort can stop when only one element remains in the heap. --- src/runtime/select.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/runtime/select.go b/src/runtime/select.go index 34c06375c2..7602230cf5 100644 --- a/src/runtime/select.go +++ b/src/runtime/select.go @@ -194,7 +194,7 @@ func selectgo(cas0 *scase, order0 *uint16, pc0 *uintptr, nsends, nrecvs int, blo } lockorder[j] = pollorder[i] } - for i := len(lockorder) - 1; i >= 0; i-- { + for i := len(lockorder) - 1; i > 0; i-- { o := lockorder[i] c := scases[o].c lockorder[i] = lockorder[0]