maybe it's just your system? master ยป gotip test -bench . goos: linux goarch: amd64 pkg: testrepo-75 BenchmarkStateSet1-4 4173546 273 ns/op BenchmarkStateSet2-4 4547119 261 ns/op BenchmarkStateSet3-4 4556757 263 ns/op PASS ok testrepo-75 4.899s
On Monday, February 24, 2020 at 9:33:24 PM UTC+1, Jim Robinson wrote: > > Hi folks, > > I was testing some code and I noticed something that struck me as little > odd. In the following code: > > https://play.golang.org/p/z8OOCrnZ85s > > we have routines Set1, Set2, and Set3. They do the same thing, but change > where time.Now().Unix() is called. > > Set1 calls for the time before it acquires a mutex, eventually passing > that time onto a 3rd function > > Set2 calls for the time after it's acquired the lock, and passes the value > onto the 3rd function. > > Set3 calls for the time after it's acquired the lock as part of its call > to the 3rd function. > > The benchmarks for these operations is different: > > $ go test -bench . > goos: linux > goarch: amd64 > BenchmarkStateSet1-64 1000000 1156 ns/op > BenchmarkStateSet2-64 1295552 833 ns/op > BenchmarkStateSet3-64 2348185 703 ns/op > PASS > ok _/home/jimr/tmp/odd 5.739s > $ go test -bench . > goos: linux > goarch: amd64 > BenchmarkStateSet1-64 1000000 1146 ns/op > BenchmarkStateSet2-64 3256602 603 ns/op > BenchmarkStateSet3-64 1439412 842 ns/op > PASS > ok _/home/jimr/tmp/odd 5.983s > $ go test -bench . > goos: linux > goarch: amd64 > BenchmarkStateSet1-64 1000000 1130 ns/op > BenchmarkStateSet2-64 1772056 772 ns/op > BenchmarkStateSet3-64 2637054 433 ns/op > PASS > ok _/home/jimr/tmp/odd 6.325s > > Based on the difference between Set2/Set3 I'm wondering if this is just a > case of the numbers being small enough that it's hard to reliabily measure > them, but I'm struck how much slower Set1 is than Set2/Set3, apparently due > to whether or not the time.Now().Unix() call is made within the lock? Why > would that be? > > Jim > > -- You received this message because you are subscribed to the Google Groups "golang-nuts" group. To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/golang-nuts/d6daaa82-43c2-480a-beb2-fb4459d2a53b%40googlegroups.com.