On 31/05/13 23:58, Steven Schveighoffer wrote:
On Fri, 31 May 2013 00:48:47 -0400, Peter Williams

That makes programming much easier, doesn't it.  I'll just avoid it by
using:

a = a ~ b;

instead of:

a ~= b;

If you care nothing for performance, this certainly is a way to go.

where I think it might be an issue or is that broken too?

This is a conservative "always reallocate" methodology, it should work
just like you allocated a new array to hold a and b.

That's what I assumed. I'm still getting used to the idea that "a <op>= b" isn't just a shorthand for "a = a <op> b".


If a is frequently large, and b is frequently small, you will kill your
performance vs. a ~= b.

I doubt that I'll be doing it often enough (i.e. only when I think that it's an issue) for it to matter. The only time I have two variables for the same array is when I pass one to a function as a parameter and if I'm intending to modify it in the function I'll pass it by reference so that there's no gotchas.

I do like the idea that "~=" is generally cheap as it potentially makes building lists easy (is there any need for the singly linked list in D?) and I may modify some of my code. I've been allocating arrays using "new array[size]" where I know that "size" will be the max needed but that it may be too much (i.e. throwing away duplicates) inserting into the array and then adjusting "length" to whatever I used. In the case, where it's highly likely that the whole array will fit in a page I might as well allocate an empty array and use "+=". NB there's only one copy of the array.

Peter


Reply via email to