OK, thank you everyone :)

Le samedi 2 août 2025 à 01:02:41 UTC+2, peterGo a écrit :

> On Friday, August 1, 2025 at 4:39:17 PM UTC-4 Pierre Durand wrote:
>
> I think it's related to the fact that b.Loop() disables some 
> optimizations, but I'm not sure.
>
>
> Pierre,
>
> The difference between b.N and b.Loop  is a known issue. It is by design,
>
> https://groups.google.com/g/golang-nuts/c/Z017c0f59vY/m/AY1-wT0OBAAJ
>
> Peter
>  
>
> Le vendredi 1 août 2025 à 22:33:56 UTC+2, Pierre Durand a écrit :
>
> I can reproduce the issue with this code 
> https://github.com/pierrre/go-libs/blob/31bec3f12a86382924cc0b486c2008db062a14bd/runtimeutil/runtimeutil_test.go#L101-L118
> Sorry I can't write a smaller code snippet, because I think it's related 
> to escape analysis, and I don't fully understand it.
>
> As you can see, I'm benchmarking the same function WriteFrames() with the 
> old and the new benchmarking methods.
>
> When I run the benchmark, here is the result
>
> go test -v -run=^$ -bench="^BenchmarkWriteFrames" -benchmem ./runtimeutil 
> goos: linux
> goarch: amd64
> pkg: github.com/pierrre/go-libs/runtimeutil
> cpu: Intel(R) Core(TM) i7-8750H CPU @ 2.20GHz
> BenchmarkWriteFrames
> BenchmarkWriteFrames-12           366825              3091 ns/op           
>     0 B/op          0 allocs/op
> BenchmarkWriteFramesNew
> BenchmarkWriteFramesNew-12        328620              3445 ns/op           
>    80 B/op          4 allocs/op
> PASS
> ok      github.com/pierrre/go-libs/runtimeutil  2.303s
>
>
>
> Le ven. 1 août 2025 à 22:04, Junyang Shao <shaoj...@google.com> a écrit :
> >
> > Hello Pierre,
> >
> > Thank you for bringing up this issue.
> >
> > May you share the code snippet that triggers this behavior? Thanks.
>
> >
> > On Fri, Aug 1, 2025 at 12:50 PM Pierre Durand <pierre...@gmail.com> 
> wrote:
> >>
> >> Hello
> >>
> >> I noticed a weird behavior when I'm benchmarking with testing.B.Loop() 
> code that uses iterators .
> >> The benchmark shows allocations where I start to iterate the iterator, 
> and where I declare variables (before the loop) that are used inside the 
> iterator loop.
> >> I know that my code is not doing any allocation, so it's strange.
> >> If I change my benchmark to use the old "range b.N", then it doesn't 
> show this strange behavior.
> >> If I check allocations with "testing.AllocsPerRun", I don't see any 
> allocation.
> >>
> >> Is that a know issue ? Should I open a bug ?
> >> What should I do ? Use the old benchmarking method ?
> >>
> >> Regards
> >>
> >> --
> >> 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...@googlegroups.com.
> >> To view this discussion visit 
> https://groups.google.com/d/msgid/golang-nuts/70456dc1-3380-40fd-951d-e52275bc48a5n%40googlegroups.com
> .
> >
> >
> >
> > -- 
> > Thanks,
> > Junyang
>
>
>
> -- 
> Pierre Durand
>
>

-- 
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 visit 
https://groups.google.com/d/msgid/golang-nuts/6328c3ac-fc30-4255-ad72-882d0e4b3c56n%40googlegroups.com.

Reply via email to