>You are supposed to run the loop b.N times, not some fixed constant.
I understand. This is a simulation of a single bigger task that takes a
while. I'm not trying to time the rand function inside the loop. The loop
is simply to burn time. This simple function is a minimal example that
demonstrates a problem I was having with my own real benchmark test.
I don't know for sure that the compiler is NOT optimizing away this rand
function, but I can tell you this problem was happening on my own code that
can not be optimized away.
Thanks.
On Tuesday, May 19, 2020 at 12:39:33 PM UTC-4, Volker Dobler wrote:
>
> You are supposed to run the loop b.N times, not
> some fixed constant. Also make sure the compiler
> doesn't optimize away the whole function.
>
> V.
>
> On Tuesday, 19 May 2020 18:20:43 UTC+2, Warren Bare wrote:
>>
>> Hi Folks,
>>
>> I'm getting weird results from Benchmark. Maybe someone can help me
>> understand this. I'm running on amd-64 (Threadripper 16 core 32 thread)
>> Windows 10. Go 1.14.3
>>
>> I have the benchmark below (main_test.go) on a minimum "hello world"
>> main.go (just like playground).
>>
>> When I run the benchmark as it is below, I get the results included just
>> below here. Notice it reports 0.135 ns/op but the time is actually 135
>> *ms* so it is off by a factor of 1 billion. It is like it trying to
>> report in seconds but did not change the label from ns to s.
>>
>> Further, if I increase the loop 10x from 10_000_000 to 100_000_000, then
>> it prints Duration 1.349 seconds (good) and now the Benchmark time has
>> increased by a factor of 10 *billion *and is now correctly reported as
>> 1349224200 ns/op
>>
>> What am I missing here?
>>
>>
>> BenchmarkMarshalSample-32 1000000000 0.135 ns/op 0
>> B/op 0 allocs/op
>> --- BENCH: BenchmarkMarshalSample-32
>> main_test.go:14: Duration 136.1221ms
>> main_test.go:14: Duration 135.1214ms
>> main_test.go:14: Duration 134.1763ms
>> main_test.go:14: Duration 135.1217ms
>> main_test.go:14: Duration 135.1298ms
>> main_test.go:14: Duration 135.1217ms
>> main_test.go:14: Duration 135.1218ms
>> main_test.go:14: Duration 135.1213ms
>> main_test.go:14: Duration 135.1298ms
>> main_test.go:14: Duration 135.1216ms
>> ... [output truncated]
>> PASS
>>
>>
>>
>> package main
>>
>> import (
>> "math/rand"
>> "testing"
>> "time"
>> )
>>
>> func BenchmarkMarshalSample(b *testing.B) {
>> start := time.Now()
>> for i := 0; i < 10_000_000; i++ {
>> rand.Int63()
>> }
>> b.Log("Duration", time.Now().Sub(start))
>> }
>>
>>
--
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 [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/golang-nuts/2abb7390-3c3c-4172-aead-021dbf500bad%40googlegroups.com.