(To expand on Yichao's comment: Remove the comma in both for loops)

On Thursday, July 14, 2016, Yichao Yu <[email protected]> wrote:

> On Thu, Jul 14, 2016 at 6:49 AM, Michele Giugliano <[email protected]
> <javascript:;>> wrote:
> > Julia newbie here!
> >
> > I noticed a performance loss (by means of @benchmark from
> BenchmarkTools),
> > when a function returns a value versus when it does not.
> >
> > Note: in the code snippet (see below) that I prepared to exemplify my
> issue,
> > there's also an increase in the number of allocations - which I don't
> > understand - when returning values.
> >
> > However, in my own function (not included here), simulating a
> mathematical
> > model, there is no such a difference in the allocations but a ~5 times
> > performance degradation - as indicated by the output of @benchmark below:
> >
> > (with output returned)
> >
> > BenchmarkTools.Trial:
> >   samples:          10000
> >   evals/sample:     1
> >   time tolerance:   5.00%
> >   memory tolerance: 1.00%
> >   memory estimate:  32.00 bytes
> >   allocs estimate:  1
> >   minimum time:     62.56 μs (0.00% GC)
> >   median time:      62.63 μs (0.00% GC)
> >   mean time:        72.77 μs (0.00% GC)
> >   maximum time:     263.93 μs (0.00% GC)
> >
> >
> >
> > (without output returned)
> >
> > BenchmarkTools.Trial:
> >
> >   samples:          10000
> >   evals/sample:     1
> >   time tolerance:   5.00%
> >   memory tolerance: 1.00%
> >   memory estimate:  0.00 bytes
> >   allocs estimate:  0
> >   minimum time:     11.22 μs (0.00% GC)
> >   median time:      13.58 μs (0.00% GC)
> >   mean time:        14.19 μs (0.00% GC)
> >   maximum time:     119.73 μs (0.00% GC)
> >
> >
> >
> > Is any gentle soul out there, patient enough and willing to explain
> whether
> > this might be a Julia's bug, or whether it is my brain's bug... ?
> >
> >
> > The code snippet is pasted below, including the output of @benchmark:
> >
> > function test1()
> >     a = rand(10000)
> >     for k=1:10,
> >         a = rand(10000)
> >     end
> > end
> >
> >
> > function test2()
> >     a = rand(10000)
> >     for k=1:10,
> >         a = rand(10000)
>
> Note that you are looping a over the array.
>
> >     end
> >     a[1]
> > end
> >
> >
> >> @benchmark test1() # without output returned
> >
> > BenchmarkTools.Trial:
> >   samples:          10000
> >   evals/sample:     1
> >   time tolerance:   5.00%
> >   memory tolerance: 1.00%
> >   memory estimate:  860.41 kb
> >   allocs estimate:  44
> >   minimum time:     210.01 μs (0.00% GC)
> >   median time:      292.29 μs (0.00% GC)
> >   mean time:        483.24 μs (20.95% GC)
> >   maximum time:     26.80 ms (93.95% GC)
> >
> >
> >
> >> @benchmark test2() # with output returned
> >
> > BenchmarkTools.Trial:
> >   samples:          3398
> >   evals/sample:     1
> >   time tolerance:   5.00%
> >   memory tolerance: 1.00%
> >   memory estimate:  2.37 mb
> >   allocs estimate:  100045
> >   minimum time:     704.49 μs (0.00% GC)
> >   median time:      896.99 μs (0.00% GC)
> >   mean time:        1.46 ms (17.55% GC)
> >   maximum time:     37.16 ms (36.87% GC)
> >
> >
> > Thank you all.
>

Reply via email to