On Wednesday, 21 November 2012 at 20:16:59 UTC, Walter Bright
wrote:
On 11/21/2012 10:41 AM, John Colvin wrote:
In what way does it become a performance problem?
Allocating memory is always much, much slower than not
allocating memory.
A design that forces allocating new memory and discarding the
old as opposed to reusing existing already allocated memory is
going to be far slower. In fact, the allocation/deallocation is
going to dominate the performance timings, not the array
operation itself.
Generally, people who use array operations want them to be
really fast.
Well yes, of course, I thought you meant something more esoteric.
I'm not suggesting that we replace the current design, simply
extend it.
We'd have:
c[] = a[] + b[];
fast, in place array operation, the cost of allocation happens
earlier in the code.
but also
c = a[] + b[];
a much slower, memory assigning array operation, pretty much just
shorthand for
c = new T[a.length];
c[] = a[] + b[];
You could argue that hiding an allocation is bad, but I would
think it's quite obvious to any programmer that if you add 2
arrays together, you're going to have to create somewhere to put
them... Having the shorthand prevents any possible mistakes with
the length of the new array and saves a line of code.
Anyway, this is a pretty trivial matter, I'd be more interested
in seeing a definitive answer for what the correct behaviour for
the statement a[] = b[] + c[] is when the arrays have different
lengths.