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.

Reply via email to