I think comparisons between those two will depend a lot on context. If you need
to use linear algebra functions, the Array{Array{Float64, 1}, 1} approach won’t
work at all, so it’ll be infinitely slow. If you’re constantly just grabbing
columns stored that way, it might be faster since you might avoid some copying
— at the moment, for an array, A, A[:, i] does a copy which you might slow
things down depending on context.
— John
On Mar 24, 2014, at 7:33 AM, Ethan Anderes <[email protected]> wrote:
> I'm definitely not an expert but I thought I would chime in on your "arrays
> of arrays vrs matrices" question.
>
> I recently developed a project where I started out using:
> Array{Array{Float64,1},1} as a container for a set of state vectors in an ODE
> flow. This seemed most natural but I figured once I got it to work, I would
> speed it up by representing everything in a compact matrix representation:
> Array{Float64,2}. However, I was never able to speed things up much with
> Array{Float64,2} over the Array{Array{Float64,1},1} container.
>
> I ended up with the impression (experts can confirm or deny this) that
> although Array{Float64,2} may be stored in memory more compactly than
> Array{Array{Float64,1},1}, the latter container is already very efficient so
> that any speed gains were marginal.
>
> Is this the experience of others?
>
> Cheers,
> Ethan