]> Cypherpunks repositories - gostls13.git/commit
runtime,sync: using fastrandn instead of modulo reduction
authorMeng Zhuo <mzh@golangcn.org>
Thu, 30 Sep 2021 14:46:09 +0000 (22:46 +0800)
committerMeng Zhuo <mzh@golangcn.org>
Thu, 7 Oct 2021 14:01:52 +0000 (14:01 +0000)
commitecb2f231fa41b581319505139f8d5ac779763bee
tree9892a8ece179edd0a1a88273e271255d18295b62
parent6f74ed06c5b0e1d69fb70e89f31f002f18554c79
runtime,sync: using fastrandn instead of modulo reduction

fastrandn is ~50% faster than fastrand() % n.
`ack -v 'fastrand\(\)\s?\%'` finds all modulo on fastrand()

name              old time/op  new time/op  delta
Fastrandn/2       2.86ns ± 0%  1.59ns ± 0%  -44.35%  (p=0.000 n=9+10)
Fastrandn/3       2.87ns ± 1%  1.59ns ± 0%  -44.41%  (p=0.000 n=10+9)
Fastrandn/4       2.87ns ± 1%  1.58ns ± 1%  -45.10%  (p=0.000 n=10+10)
Fastrandn/5       2.86ns ± 1%  1.58ns ± 1%  -44.84%  (p=0.000 n=10+10)

Change-Id: Ic91f5ca9b9e3b65127bc34792b62fd64fbd13b5c
Reviewed-on: https://go-review.googlesource.com/c/go/+/353269
Trust: Meng Zhuo <mzh@golangcn.org>
Run-TryBot: Meng Zhuo <mzh@golangcn.org>
TryBot-Result: Go Bot <gobot@golang.org>
Reviewed-by: Keith Randall <khr@golang.org>
src/runtime/malloc.go
src/runtime/mbitmap.go
src/runtime/proc.go
src/runtime/stubs.go
src/runtime/symtab.go
src/sync/pool.go