When in doubt, use @benchmark!

On Tue, Nov 1, 2016 at 5:49 AM, Johan Sigfrids <johan.sigfr...@gmail.com>
wrote:

> 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