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/a457e425-2b39-4841-8490-bc7f475deeb0%40googlegroups.com.

Reply via email to