]> Cypherpunks repositories - gostls13.git/commit
sync: add fast path to Once
authorDmitriy Vyukov <dvyukov@google.com>
Tue, 28 Jun 2011 13:43:01 +0000 (09:43 -0400)
committerRuss Cox <rsc@golang.org>
Tue, 28 Jun 2011 13:43:01 +0000 (09:43 -0400)
commit93dde6b0e6c0de50a47f9dc5f3ac7205c36742aa
tree75105c129883a2786190827e97613418b38b6388
parent81592c298b3b55bda7eaeedc000f02eecc7a2165
sync: add fast path to Once
The implementation does not grab the lock,
if Once is already initalized.
Benchmark results on HP Z600 (2 x Xeon E5620, 8 HT cores, 2.40GHz)
are as follows:
benchmark                                        old ns/op    new ns/op    delta
sync_test.BenchmarkOnce                             187.00        14.00  -92.51%
sync_test.BenchmarkOnce-2                           909.00        21.40  -97.65%
sync_test.BenchmarkOnce-4                          3684.00        20.90  -99.43%
sync_test.BenchmarkOnce-8                          5987.00        23.00  -99.62%
sync_test.BenchmarkOnce-16                         5051.00        21.60  -99.57%

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