]> Cypherpunks repositories - gostls13.git/commit
sync: improve Once fast path
authorDmitriy Vyukov <dvyukov@google.com>
Thu, 21 Jul 2011 15:30:14 +0000 (11:30 -0400)
committerRuss Cox <rsc@golang.org>
Thu, 21 Jul 2011 15:30:14 +0000 (11:30 -0400)
commitd2ab2b9f42399c9a9b481dcb2abe4dc47b4a619b
tree7d3eff641001a931e418a23daded9c0929d53a94
parentd6ed1b70ade474a901eb5deaf00e536d26a6ccd6
sync: improve Once fast path
Use atomic.LoadUint32(&done) instead of
atomic.AddInt32(&done, 0) on fast path.

benchmark            old ns/op    new ns/op    delta
BenchmarkOnce            13.40         7.26  -45.82%
BenchmarkOnce-2          22.90         4.04  -82.36%
BenchmarkOnce-4          25.60         2.16  -91.56%
BenchmarkOnce-8          25.80         1.38  -94.65%
BenchmarkOnce-16         24.40         1.33  -94.55%

(on HP Z600, 2 x Intel Xeon E5620, 8 HT cores, 2.4 GHz)

R=golang-dev, rsc
CC=golang-dev
https://golang.org/cl/4787041
src/pkg/sync/once.go