How are 2D static arrays allocated?
Lars Kyllingstad
public at kyllingen.NOSPAMnet
Wed Nov 5 02:14:12 PST 2008
Jarrett Billingsley wrote:
> Performance of dynamic arrays is the same no matter where their data
> is. Fixed-size 2D arrays are not faster _because_ they are on the
> stack, they just happen to be allocated on the stack. They are faster
> (usually) because they don't need two pointer dereferences. You can
> allocated a fixed-size 2D array on the heap (well.. inside a struct or
> class anyway) and it will be just as fast.
Your "usually" interests me. I was under the impression, and it seems
quite logical, that static arrays are faster than dynamic ones. However,
recently I did some simple experiments with matrix operations
(multiplication, etc.), in which performance was actually a little bit
better for dynamic arrays.
Is there a general "rule" for when dynamic arrays are faster than static
ones, and vice versa?
Also, I tried multiplying large matrices both using arrays in D and
using a C BLAS implementation. The BLAS algorithm is the same as the one
I've written in D, and additionally includes a lot of runtime checks.
Still, multiplication using BLAS was about four times faster. Is this
simply because C compilers are a lot better at optimisation than the D
compilers?
-Lars
More information about the Digitalmars-d-learn
mailing list