stream() / parallelStream() methods
Brian Goetz
brian.goetz at oracle.com
Sat Feb 9 08:41:35 PST 2013
> Well, I don't like the parallel() method on Stream anyway, so I'll
> let others take over from here...
You can't drop a bomb like that and walk away! You have to explain why
you don't like it, because I suspect most people's first guess about why
will be wrong.
I'll take my best stab at explaining why: because it (like the stateful
methods (sort, distinct, limit)) which you also don't like, move us
incrementally farther from being able to express stream pipelines in
terms of traditional data-parallel constructs, which further constrains
our ability to to map them directly to tomorrow's computing substrate,
whether that be vector processors, FPGAs, GPUs, or whatever we cook up.
Filter-map-reduce map very cleanly to all sorts of parallel computing
substrates;
filter-parallel-map-sequential-sorted-limit-parallel-map-uniq-reduce
does not.
So the whole API design here embodies many tensions between making it
easy to express things the user is likely to want to express, and doing
is in a manner that we can predictably make fast with transparent cost
models.
More information about the lambda-libs-spec-experts
mailing list