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.

Reply via email to