brian.goetz at oracle.com
Wed Oct 3 14:37:51 PDT 2012
Another implementation approach would be to only have one Map, a ConcurrentHashMap, whose keys are StreamBuilders. The first thread to discover a key does a putIfAbsent(k, new SB()). Insertion proceeds as
If the classifier function spreads the keys broadly then contention may not be a huge issue, and then there is no reduction phase at all.
On Oct 3, 2012, at 11:27 AM, Paul Sandoz wrote:
> Here is an implementation of GroupByOp.evaluateParallel:
> based from the previous patches in my queue.
> The casts from Map<K, StreamBuilder<T>> to Map<K, Collection<T>> are annoying. Perhaps we need a more formal transition from StreamBuilder to Collection?
> The reduction phase (traversing up the computation tree) could be more efficient if two or more StreamBuilder<T> instances could be efficiently merged, perhaps if we know something about the implementation data structures. This feels very like what TreeUtils.Node does.
> Potentially there could be another parallel evaluation if we wanted to "flatten" the tree of values to T.
More information about the lambda-dev