Given that allocating an array for 50 Ints, filling it up, and then summing 
it all together probably takes less than a microsecond, any difference 
between allocating and not allocating will disappears in the noise. As Yichao 
Yu mentions, what you end up measuring is the time it takes to setup the 
computation. This is a case where using the BenchmarkTools can be really 
helpful. 

julia> using BenchmarkTools

julia> @benchmark sum([2*t for t in 1:2:100])
BenchmarkTools.Trial: 
  samples:          10000
  evals/sample:     907
  time tolerance:   5.00%
  memory tolerance: 1.00%
  memory estimate:  560.00 bytes
  allocs estimate:  2
  minimum time:     121.00 ns (0.00% GC)
  median time:      131.00 ns (0.00% GC)
  mean time:        162.82 ns (10.91% GC)
  maximum time:     2.45 μs (0.00% GC)

julia> @benchmark sum(2*t for t in 1:2:100)
BenchmarkTools.Trial: 
  samples:          10000
  evals/sample:     962
  time tolerance:   5.00%
  memory tolerance: 1.00%
  memory estimate:  80.00 bytes
  allocs estimate:  3
  minimum time:     86.00 ns (0.00% GC)
  median time:      90.00 ns (0.00% GC)
  mean time:        107.20 ns (6.99% GC)
  maximum time:     3.64 μs (95.05% GC)


On Monday, October 31, 2016 at 9:42:14 PM UTC+2, Jesse Jaanila wrote:
>
> Hi,
>
> I was experimenting with the new 0.5 features and they are great! But to 
> my surprise,
> the generator syntax doesn't work as I'm expecting. Let's say I want to 
> calculate
> some summation. With the old syntax I could do
>
> @time sum([2*t for t in 1:2:100])
>   0.015104 seconds (13.80 k allocations: 660.366 KB)
>
> that allocates the array within the summation. Now I thought this would a 
> prime example
> where the memory overhead could be decreased by using the new notation i.e.
>
> @time sum(2*t for t in 1:2:100)
>   0.019215 seconds (18.98 k allocations: 785.777 KB)
>
> ,but generator syntax performs slightly worse. Also if we want find the 
> maximum we would do
>
> julia> @time maximum([2*t for t in 1:2:100])
>   0.015182 seconds (12.90 k allocations: 606.166 KB)
> 198
>
> julia> @time maximum(2*t for t in 1:2:100)
>   0.019935 seconds (18.74 k allocations: 772.180 KB)
> 198
>
> Have I understood the new generator syntax incorrectly or should the new 
> syntax perform
> better in these code snippet examples?
>
>
>
>
>
>
>

Reply via email to