On 6/9/17 3:29 PM, Honey wrote:
On Friday, 9 June 2017 at 18:32:06 UTC, Steven Schveighoffer wrote:
Wow, so that's how D code would look like if it were C++ :)

Well, I cannot (and did not try to) hide where I am coming from. ;-)

hehe this was meant more as a dig at C++ syntax and not you, I totally understand the reason you did it that way.

Just to show you what I meant, I changed your code to eliminate the functors completely, the main function now looks like this:


    foreach (i;  0 .. N)
    {
        insertionSort!((a, b) => lt(a, b))(v);
        insertionSort!((a, b) => lt(b, a))(v);
    }

I'm sure there's also a way to reduce the initialization of the array to a few lines (or maybe even one?), but didn't have time to think about it.

I did replicate that issue on my box, and mucking around with the
implementation didn't help.

In answer to the subject, no D is not slow. However, it's quite
possible that std.algorithm.bringToFront is slower than std::rotate,
or SortedRange.upperBound is slower than std::upper_bound, or both. I
don't think it's a design issue per se, probably more of an
implementation issue.

Thank you for confirming the results and your factual explanation
notwithstanding my pointed question. ;-)

Maybe I was expecting too much given Andrei's performance oriented
talks. I realize that the conceptual groundwork is more important than a
concrete implementation that can be easily improved. However, I think
that real world out-of-the-box performance - particularly with respect
to toy examples (since those are small enough to be literally
translated) - is important for prospects to gain confidence in buying
into D.

Well, D is pretty fast, as fast as C++ or C. What I mean is that there is no inherent overhead -- both can produce exactly the same code.

However, there are some parts of C/C++ that have been optimized to death. It's one of those things where D's version of rotate probably hasn't had as much scrutiny as C++'s version. We are always looking to improve such things, and more investigation and suggestions are most welcome! It's why I filed the bug report.

At the current state, at least for such benchmarks, I think, I should
not rely on standard library facilities. Unfortunately, that does not
increase my confidence.

Try to find something besides insertion sort to test with I think ;) D is pretty fast at a lot of things, and pleasant to write. You just found one test case that isn't (and we will fix it, I'm sure).

-Steve

Reply via email to