To Stream.slice(fromInclusive, toExclusive) or Stream.slice(toSkip, limit) that is the question
Brian Goetz
brian.goetz at oracle.com
Fri Oct 11 07:06:48 PDT 2013
> skip() and limit() make perfect sense. I'm surprised by the notion
> that skip(60).limit(10) would be less efficient than
> skipAndLimit(60,10)
That's because you're thinking sequentially! The sequential
implementation is fast no matter what you do. But skip and limit are
constrained to operate in *encounter order* -- you don't just skip any
N, you skip the *first N*. This is death for parallel operations,
unless there's something else you can do to sidestep the problem (which
we do for streams with predictable size and splitting characteristics,
or for unordered streams.)
As a general rule, whenever you find yourself thinking "I don't
understand why they just don't...", the answer is probably because
you've got your sequential goggles on, which filters the hard part from
your view.
More information about the lambda-libs-spec-observers
mailing list