• Carlo Alberto Ferraris's avatar
    math/rand: devirtualize interface in lockedSource · 93136576
    Carlo Alberto Ferraris authored
    Avoid interface calls, enable inlining, and store the rngSource close to the
    Mutex to exploit better memory locality.
    
    Also add a benchmark to properly measure the threadsafe nature of globalRand.
    
    On a linux/amd64 VM:
    
    name                       old time/op  new time/op  delta
    Int63Threadsafe-4          36.4ns ±12%  20.6ns ±11%  -43.52%  (p=0.000 n=30+30)
    Int63ThreadsafeParallel-4  79.3ns ± 5%  56.5ns ± 5%  -28.69%  (p=0.000 n=29+30)
    
    Change-Id: I6ab912c1a1e9afc7bacd8e72c82d4d50d546a510
    Reviewed-on: https://go-review.googlesource.com/c/go/+/191538Reviewed-by: default avatarEmmanuel Odeke <emm.odeke@gmail.com>
    Run-TryBot: Emmanuel Odeke <emm.odeke@gmail.com>
    TryBot-Result: Gobot Gobot <gobot@golang.org>
    93136576
inl_test.go 6.62 KB