Array types

Nick B "nick_NOSPAM_.barbalich" at gmail.com
Sat Aug 28 17:24:56 PDT 2010


On 27/08/2010 9:38 a.m., bearophile wrote:
> Arrays are one of the most useful and most efficient data structures for nonfunctional languages. They look simple, but in a low-level language you sometimes need various kinds of them. So they are not so simple.
>
> In D there are two kinds of built-in arrays:
> A) 1D Dynamic arrays on the heap
> B) Almost-nD rectangular fixed-sized arrays allocated on the stack by functions (or data segment), they may also go on the heap if they are part of an object (and with placement new they may go everywhere).
>
> So far in D code I have had need of (and I have seen some people need) some other kinds of arrays, not (well) supported by D:
> C) nD rectangular dynamic arrays;
> D) Dynamic arrays allocated on the stack;
> E) Fixed-sized arrays allocated on the heap;
> F) Variable-sized structs allocated on the heap.
>
> ----------------------
>
> The (C) arrays are not the same thing as dynamic arrays of dynamic arrays because:
> - Some algorithms are not designed for a triangle where rows may differ in length. Testing that rows are all the same length at runtime wastes time, and if you don't test it then it may cause bugs;
> - Sometimes you want to reshape a 2D matrix, so it's useful to store the matrix in contiguous memory;
> - Sometimes you need complex slicing, for example removal of some columns and rows from a 2D matrix.
>

Bearophile

Have you got any numbers to back your claim for increased performance 
for nD rectangular dynamic arrays ?

I too, am interested  in them, but would like to use them with Tango, 
and therefore if there was a increase in performance, and therefore a 
real benefit, then would ask that they be added to the D language, so 
that all in the D community could benefit.

Nick B


More information about the Digitalmars-d mailing list