• Dmitriy Vyukov's avatar
    sync: improve Once fast path · d2ab2b9f
    Dmitriy Vyukov authored
    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
    d2ab2b9f
Name
Last commit
Last update
..
atomic Loading commit data...
Makefile Loading commit data...
cond.go Loading commit data...
cond_test.go Loading commit data...
mutex.go Loading commit data...
mutex_test.go Loading commit data...
once.go Loading commit data...
once_test.go Loading commit data...
rwmutex.go Loading commit data...
rwmutex_test.go Loading commit data...
waitgroup.go Loading commit data...
waitgroup_test.go Loading commit data...