On Thursday, 27 March 2014 at 15:45:14 UTC, Andrei Alexandrescu wrote:
On 3/27/14, 8:44 AM, Steven Schveighoffer wrote:
On Thu, 27 Mar 2014 11:40:59 -0400, Andrei Alexandrescu
<[email protected]> wrote:

On 3/27/14, 5:35 AM, Steven Schveighoffer wrote:
BTW, I think there has been recent talk about not focusing on dust when we are laying bricks. This would have my vote as useless dust. This does not solve the problem of streams-as-ranges, because streams don't make good ranges. It doesn't really solve any problems as far as I can tell.

I think byXchar are important and are not streams. -- Andrei

What's broken about those?

Speed.

I call shenanigans. This is the code:

            @property bool empty()
            {
                if (nLeft)
                    return false;
                if (r.empty)
                    return true;

If you initialized the next element in both constructor and popFront, then you'd get rid of both these checks.

Furthermore, popFront() has a guaranteed "1 call" per element. Weareas "empty" and "front" may be called several times in a row for a single element.

If you want efficiency, stop being "member-wise" lazy, and put some eagerness in your code.

filter comes to mind. -- Andrei

You *just* turned down a pull that did exactly that, for exactly the same reasons.

Have "byXChar" function like filter: construction and popFront do the work, and front/empty is 0(1), and const, and strongly pure to boot. I *know* the compiler likes that in terms of speed.

Reply via email to