On 2011-05-30 22:52, Andrej Mitrovic wrote: > On 5/30/11, Vladimir Panteleev <[email protected]> wrote: > > On Mon, 30 May 2011 04:18:14 +0300, Jeremy Wright > > <[email protected]> > > > > wrote: > >> I implemented bucket sort in D to demonstrate how easy it is to use > >> std.parallelism. I welcome any feedback. > > > > One thing: I would suggest to avoid using ~= in a tight loop, as it is > > rather slow. Using std.array.appender for the first loop and > > std.array.join for the second one should be much faster. > > > > -- > > Best regards, > > > > Vladimir mailto:[email protected] > > I wonder why we even have this operator in the language if we're > supposed to avoid it all the time.
There's no problem with using it, generally-speaking. And it's actually faster than it used to be, so it's less of an issue. The problem really only lines with a tight loop. Extra checks have to be made with ~= to verify that reallocation isn't needed which don't have to be made with Appender, because it's able to make assumptions that ~= can't make. So, if you're in a loop that appends over and over for a large number of iterations, it's going to be faster to use Appender. Other than that, ~= is plenty fast enough. - Jonathan M Davis
