PROPOSAL: fold keyword (original) (raw)

Joseph D. Darcy Joe.Darcy at Sun.COM
Tue Mar 10 10:43:41 PDT 2009


Tim Peierls wrote:

On Tue, Mar 10, 2009 at 11:51 AM, Gabriel Belingueres <belingueres at gmail.com

wrote:

I'm not specially familiar with this library, but seems like it is the concurrent equivalent to what can be done with the Apache Commons Collections. It's a bit different from Apache Commons Collections. I think of it loosely as MapReduce for an in-memory array. The big reason to use ParallelArray is that is performs very well on multiprocessors without the user having to write special code to take advantage of parallelism. Interestingly, when I first experimented with it I saw a speedup of ParallelArray over equivalent sequential code on a machine with one hyper-threaded physical processor (2 logical processors). That really surprised me. Though the method call is very readable (given the appropriate naming of the predicates and mapping), this need the extra objects and anonymous classes I wanted to avoid creating. Not that there is anything wrong with that, it is just I wanted to find a more straightforward way to do it (if there is any). Simple sequential code is more straightforward, as Josh demonstrated. Why does creating the extra objects bother you? You're not creating those objects in the inner loop. One Predicate object can be used for gazillions of predicate tests and it takes up almost no memory.

... and even so generational garbage collectors and designed to efficiently deal with short-lived objects; additionally current VMs can quickly allocate objects first into thread-local storage areas.

-Joe



More information about the coin-dev mailing list