John is right that if you change to

    B=fill!(Array(Vector{Int},5,5),Int64[])

then you don't see the weird allocations. (Note: you probably really want

    B = Vector{Int}[Int[] for i = 1:5, j = 1:5]

so each element of B is independent.)


Still, this one should win some kind of prize for "strangest allocation result 
of 2014." Where would you like your plastic pink elephant mailed to :-)?

--Tim

On Monday, December 01, 2014 06:45:33 PM Yijing Wu wrote:
> Sorry it seems that I simplified my problem too much in the previous code.
> Actually I am running something similar to the following, and I run it as a
> function and it starts to have allocation since i=512. I am really unsure
> if it's my coding problem(so it can be improved to 0 bytes) or it is
> natural in the system that allocations appear. Thank you so much!
> 
> function test()
> 
> B=fill!(cell(5,5),Int64[])
> 
> 
> for i=1:513
> 
>         push!(B[2,3],i)
> 
> end
> 
> 
> T=zeros(Int64,513)
> 
> 
> for i=1:513
> 
>         @time T[i]=B[2,3][i]
> 
>         println(T[i])
> 
> end
> 
> end
> 
> 
> 
> 在 2014年12月1日星期一UTC-6下午7时24分31秒,John Myles White写道:
> 
> > Did you run this inside a function? If not, your results are not going to
> > be useful indicators of how code will perform inside a function.
> > 
> > Inside of a function body, I see 0 bytes being allocated.
> > 
> >  -- John
> > 
> > On Dec 1, 2014, at 4:53 PM, Yijing Wu <[email protected] <javascript:>>
> > wrote:
> > 
> > Hi all, I found a strange problem about a very simple code in julia and
> > hopefully I can get some help from you, here is the code:
> > 
> > 
> > B=[1:1000]
> > 
> > T=zeros(Int64,1000)
> > 
> > for i=1:1000
> > 
> >         @time T[i]=B[i]
> >         
> >         println(T[i])
> > 
> > end
> > 
> > 
> > And when I run the code, the @time shows that it require 48 bytes
> > allocation when i is larger than or equal to 512, and 0 bytes when
> > smaller. Is this a problem that can be improved or I have to accept that
> > it is designed to take some allocations when larger than 512?
> > 
> > 
> > Thanks a lot for your help!

Reply via email to