[Issue 13936] groupBy must be redone

via Digitalmars-d-bugs digitalmars-d-bugs at puremagic.com
Sat Jan 10 12:05:49 PST 2015


https://issues.dlang.org/show_bug.cgi?id=13936

--- Comment #17 from Andrei Alexandrescu <andrei at erdani.com> ---
I recreated GroupBy as I envision it from scratch in
http://dpaste.dzfl.pl/93a13ee08cc1. So:

* Each group has a group counter that "stamps" it to identify it from the other
groups.

* Within a group iteration is fast: there's no additional indirection and one
iteration evaluates one empty, one predicate, and one popBack.

* At the end of each group, the next group for the mothership is primed. That
way the repeated O(groupLength) iteration is saved.

* Each mothership allocates memory for one payload, which will be then freed
when the mothership and all of its groups go away.

* Copying one mothership will work but groups originating from one given
mothership only help that particular mothership.

The code is only a proof of concept - it doesn't account for input vs. forward
ranges, has scant testing etc.

Does my vision make sense?

--


More information about the Digitalmars-d-bugs mailing list