Taking pipeline processing to the next level
Johannes Pfau via Digitalmars-d
digitalmars-d at puremagic.com
Mon Sep 5 03:32:05 PDT 2016
Am Mon, 5 Sep 2016 10:21:53 +0200
schrieb Andrei Alexandrescu <SeeWebsiteForEmail at erdani.org>:
> On 9/5/16 7:08 AM, Manu via Digitalmars-d wrote:
> > I mostly code like this now:
> > data.map!(x => transform(x)).copy(output);
> >
> > It's convenient and reads nicely, but it's generally inefficient.
>
> What are the benchmarks and the numbers? What loss are you looking
> at? -- Andrei
As Manu posted this question (and he's working on a color/image library)
it's not hard to guess one problem is SIMD/vectorization. E.g if
transform(x) => x + 2; It is faster to perfom 1 SIMD operation on 4
values instead of 4 individual adds.
As autovectorization is not very powerful in current compilers I can
easily imagine that complex range based examples can't compete with
hand-written SIMD loops.
@Manu: Have you had a look at std.parallelism? I think it has some kind
of parallel map which could provide some inspiration?
More information about the Digitalmars-d
mailing list