mirror of
https://github.com/golang/go
synced 2024-11-12 09:50:21 -07:00
runtime: remove a modulus calculation from pollorder
This is a follow-up to CL 9269, as suggested by dvyukov. There is probably even more that can be done to speed up this shuffle. It will matter more once CL 7570 (fine-grained locking in select) is in and can be revisited then, with benchmarks. Change-Id: Ic13a27d11cedd1e1f007951214b3bb56b1644f02 Reviewed-on: https://go-review.googlesource.com/9393 Reviewed-by: Dmitry Vyukov <dvyukov@google.com>
This commit is contained in:
parent
1b01910c06
commit
9a0fd97ff3
@ -243,7 +243,7 @@ func selectgoImpl(sel *hselect) (uintptr, uint16) {
|
||||
// generate permuted order
|
||||
pollslice := slice{unsafe.Pointer(sel.pollorder), int(sel.ncase), int(sel.ncase)}
|
||||
pollorder := *(*[]uint16)(unsafe.Pointer(&pollslice))
|
||||
for i := 0; i < int(sel.ncase); i++ {
|
||||
for i := 1; i < int(sel.ncase); i++ {
|
||||
j := int(fastrand1()) % (i + 1)
|
||||
pollorder[i] = pollorder[j]
|
||||
pollorder[j] = uint16(i)
|
||||
|
Loading…
Reference in New Issue
Block a user