Re: accessing large arrays quickly [message #15612 is a reply to message #15605] |
Thu, 27 May 1999 00:00  |
davidf
Messages: 2866 Registered: September 1996
|
Senior Member |
|
|
David Mattes (dmattes@u.washington.edu) writes:
> hello idl gurus: i have a very large volume array out of which i extract
> 3 orthogonal 2-d slices and display these slices in three separate
> windows. i extract a slice by assignment:
>
> slice=data(*,*,zslice)
>
> then i scale the slice, and finally display it using tv. once the volume
> grows to larger than 10Meg, i suffer a performance hit on the array access
> times, and my image browser slows down considerably. how can i improve
> performance???
>
> some ideas i've had:
> 1. render the entire volume and specify cutting planes to just display
> the slice of interest.
Yeah. I'd get one of those machines that have a GByte of RAM. That
should help. :-)
> 2. use an external c function, like memcpy, to speed up the variable
> swapping when i assign 2-d array as a crosssection of the volume array.
> 3. store each possible slice separately, perhaps in a linked list.
>
> do you idl gurus out there have any suggestions or comments on my ideas???
If this was something I was doing often, I might think about
having three versions of the array on disk, stored so that the
plane of data I was interested in was contiguous in memory.
(I hesitate to mention this, but data is stored in row order
in memory.) Then you could easily use an associated
variable method to quickly access the plane of interest.
I have a feeling the ENVI guys do something like this when
they work with large data sets.
Cheers,
David
--
David Fanning, Ph.D.
Fanning Software Consulting
Phone: 970-221-0438 E-Mail: davidf@dfanning.com
Coyote's Guide to IDL Programming: http://www.dfanning.com/
Toll-Free IDL Book Orders: 1-888-461-0155
|
|
|