Thanks for the reply. 

I assume from mutate you mean not changing type of the sub-variable (e.g 
"vstate" above) ? I plan to change the values inside that vector but the 
vector itself, both in length and type, will remain constant.

Nitin

On Monday, January 25, 2016 at 10:23:21 PM UTC-8, Yichao Yu wrote:
>
> On Tue, Jan 26, 2016 at 12:46 AM, Nitin Arora <[email protected] 
> <javascript:>> wrote: 
> > I have couple of questions ( maybe dumb :-) ) regarding composite types: 
> > 
> > 1) For a vector of composite type defined as: 
> > 
> > immutable Point{T<:AbstractFloat} 
> >   vstate   :: Vector{T} # is a vector of length 6 which will be updated 
> > during code execution 
> >   ct       :: Vector{T} # is a vector of length 4 which will be updated 
> > during code execution 
> >   id       :: Int64 # is a constant input 
> > end 
> > N = 1000 
> > MyPoints = Array(Point,N) 
> > 
> > is it more useful / recommended to use immutable or mutable composite 
> types 
> > ? I am mainly concerned with memory allocation and performance while 
> > accessing MyPoints. 
>
> Use immutable if you don't need to mutate it. 
>
> > 
> > 2) If we have a immutable composite type as: 
> > immutable Body{T} 
> >   μ      :: T 
> > end 
> > 
> > immutable PRB{T} #constant, doesn't change once set 
> >     bodlist     :: Vector{T} #vector of another immutable type 
> > end 
> > b = Body(1.0) 
> > prb = PRB([b]) 
> > 
> > and we access the variables as follows, results in memory allocation: 
> > 
> > @time b.μ 
> > 
> >   0.000002 seconds (5 allocations: 176 bytes) 
> > 
> > @time prb.bodlist[1].μ 
> > 
> >   0.000004 seconds (6 allocations: 192 bytes) 
> > 
> > 
> > why is there a memory allocation every-time I access these variables ? 
> (both 
> > for nested and the un-nested case) 
>
> And don't use @time in global scope like this. 
>
> > 
> > thanks for all the help, 
> > Nitin 
>

Reply via email to