On Mon, 19 Jan 2004 22:42:22 -0800 Jason Dunham wrote:

> As far as I've ever heard, the transpose arrays don't use any extra
> memory.  The transpose function is done "in place". I'm sure a few extra
> bytes are needed for temporary storage, but supposedly the same array
> buffer is reused. I would guess that the graph transpose option is also
> not a memory hog.  

Although a transposed array will consume the same amount of memory as
the original array, the transpose function involves creating a new array,
populating it using data from the original array, then deleting the
original. This can have a significant effect on memory usage with a
large array.

LabVIEW stores multi-dimensional arrays as a list of data items plus
4 bytes per dimension to store the size of that dimension. You can
therefore work out how much memory an array will use:

    size of array item in bytes x no. items + 4 x no. dimensions

The "no. dimensions" element becomes insignificant for large arrays.
So, an array of a million 16-bit integers will consume around an extra 2
million bytes (about 1.9MB) during transposition. 

You can confirm this by profiling some sample VIs, one with
transposition and one without. I created two VIs: the first creates a 2D
array containing 10,000,000 32-bit integers (10 x 1,000,000) and writes
it to an indicator. The second is a copy of the first, with a transpose
array node just before the indicator. The first VI consumes almost
exactly 40,000K less than the second (84,000.94K vs 124,000.98K).
According to the above formula the array will consume c. 10,000,000 x 4,
= c. 39,000K.

You may not need to worry about this memory hit if you're transposing
small arrays, but if you're transposing arrays with many millions of
elements your memory usage will increase significantly during
transposition - especially if you're using a large data type like an
extended precision float.

All the best,

Simon

Simon Whitaker <[EMAIL PROTECTED]>
Software developer, Tiab Ltd
tel: +44 (0)1295 714046
fax: +44 (0)1295 712334
web: http://www.tiab.co.uk/


Reply via email to