On 22 December 2011 09:34, James Abley <james.ab...@gmail.com> wrote:
> Thanks for that Charlie, looks interesting. > > Before anyone gets into that, what about the other candidates. I know of > at least 2: > > * Doug Lea's ConcurrentHashMapV8 > * Cliff Click's ConcurrentHashMap - > http://high-scale-lib.cvs.sourceforge.net/viewvc/high-scale-lib/high-scale-lib/java/util/concurrent/ConcurrentHashMap.java?view=log > > Any ideas how suitable they might be? > > Cheers, > > James > > Oh, I found another one. Remi Forax authored in java (derivation of the scala version?), looks good. I've not benchmarked it though. https://code.google.com/p/jsr292-cookbook/source/browse/trunk/multi-dispatch/src/jsr292/cookbook/mdispatch/util/ConcurrentTries3.java > > On 20 December 2011 20:01, Charles Oliver Nutter <head...@headius.com>wrote: > >> On Tue, Dec 20, 2011 at 12:01 PM, Yoko Harada <yoko...@gmail.com> wrote: >> > AbstractRubyHash looks good. Once this implementation comes in, >> > MapJavaProxy class can have much simpler implementation. >> >> Yeah, I think it would literally have *just* the abstract methods and >> perfom as well as Hash or the underlying Map. >> >> > More than that, how do you think about changing RubyHashEntry class >> > >> > public static final class RubyHashEntry implements Map.Entry { >> > ... >> > } >> > >> > to ConcurrentLikedQueue<Map.Entry> or other classes of concurrent >> > package? I can't say anything about performance at this moment, but at >> > least thread safety will get better. >> >> I'm not super eager to make Hash thread-safe, but if we could do it >> without perf issues I'd be all for it. If we can't, I want us to be >> able to provide a solid alternative, which is where the >> AbstractRubyHash stuff comes in. >> >> The biggest down side to ConcurrentHashMap, other than a bit of a perf >> hit, is that it takes an enormous amount of memory compared to a >> normal HashMap. If you aren't explicitly telling it to give you low >> concurrency (like 1 or 2 threads expected) you'll get the full-on >> 16-way CHM, which splits its backing store into 16 chunks to improve >> concurrency (and eat a lot more memory). >> >> For Rubinius, Brian Ford has been interested in porting the fancy new >> "Concurrent Hash Array Mapped Trie" implementation that Scala's using. >> That would be an *excellent* project for someone to write a Java >> version, or to help finish any incomplete Java version that's out >> there, and we could look at how it performs compared to our current >> Hash. >> >> Beyond that...I'd like to see the AbstractRubyHash change land at some >> point, but it's not on my list of things to work on. Help is wanted :) >> >> - Charlie >> >> --------------------------------------------------------------------- >> To unsubscribe from this list, please visit: >> >> http://xircles.codehaus.org/manage_email >> >> >> >