The problem is that your let block is not a proper function body. You need to 
time things inside of a function body:

julia> function foo()
              @time a1 = zeros(Int64,10000000)
              @time resize!(a1, 1000)
              @time resize!(a1, 10000000)
              @time resize!(a1, 10000000)
              @time resize!(a1, 20000000)
       end
foo (generic function with 1 method)

julia> foo()
elapsed time: 0.039935728 seconds (80000048 bytes allocated)
elapsed time: 8.61e-6 seconds (0 bytes allocated)
elapsed time: 4.45e-7 seconds (0 bytes allocated)
elapsed time: 2.71e-7 seconds (0 bytes allocated)
elapsed time: 0.000365734 seconds (160000000 bytes allocated)

 -- John

On Dec 19, 2014, at 1:34 PM, John Drummond <[email protected]> wrote:

> Sorry to be stupid - but this also helps me understand things for another 
> question:
> So bytes allocated would be the underlying usage of memory.
> 
> in which case with
> julia> let
>        @time a1 = zeros(Int64,10000000)
>        @time resize!(a1, 1000)
>        @time resize!(a1, 10000000)
>        @time resize!(a1, 10000000)
>        @time resize!(a1, 20000000)
>        end
> elapsed time: 0.015554722 seconds (80000152 bytes allocated)
> elapsed time: 5.735e-6 seconds (80 bytes allocated)
> elapsed time: 2.113e-6 seconds (80 bytes allocated)
> elapsed time: 2.113e-6 seconds (80 bytes allocated)
> elapsed time: 0.027380439 seconds (160000080 bytes allocated)
> 20000000-element Array{Int64,1}:
> 
> what's the 80 bytes allocated when I'm just changing the length I'm using?
> 
> And will increasing the size beyond the maximum always copy the whole array?
> 
> Many thanks for clarifying this.
> 
> 
> 
> 
> 
> On Friday, December 19, 2014 6:12:42 PM UTC, Tim Holy wrote:
> Julia's arrays grow by doubling, see 
> http://en.wikipedia.org/wiki/Dynamic_array 
> 
> Since you're appending elements to an array, julia has to have somewhere to 
> put them---and when there's no spare capacity, julia has to allocate a new 
> array and copy the entire thing. So some allocations are much bigger than 
> what 
> you're adding, but others (as you can see) are 0. 
> 
> This is a marked improvement over Matlab, which makes a copy of your entire 
> array each time you add 1 element. 
> 
> Best, 
> --Tim 
> 
> On Friday, December 19, 2014 10:00:28 AM John Drummond wrote: 
> > For the following code (julia 0.3.3 in windows 7 ) I don't understand what 
> > the bytes allocated in @time means 
> > 
> > All I'm doing each time is adding 10  8 byte integers 
> > 
> > Thanks for any thoughts 
> > 
> > julia> @time c = [1,2] 
> > elapsed time: 3.32e-6 seconds (144 bytes allocated) 
> > 2-element Array{Int64,1}: 
> >  1 
> >  2 
> > 
> > julia> sizeof(c) 
> > 16 
> > 
> > 
> > julia> @time for x in 30:39 push!(c, x) end 
> > elapsed time: 2.717e-6 seconds (256 bytes allocated) 
> > 
> > julia> @time for x in 30:39 push!(c, x) end 
> > elapsed time: 2.717e-6 seconds (288 bytes allocated) 
> > 
> > julia> @time for x in 30:39 push!(c, x) end 
> > elapsed time: 2.112e-6 seconds (0 bytes allocated) 
> > 
> > julia> @time for x in 30:39 push!(c, x) end 
> > elapsed time: 3.321e-6 seconds (640 bytes allocated) 
> > 
> > julia> sizeof(c) 
> > 336 
> 

Reply via email to