> Ah! but a mere hash table is not bi-directional :-) Right =) I got the idea in a Channel 9 video about MS' efforts with STM: http://channel9.msdn.com/shows/Going+Deep/Software-Transactional-Memory-The-Current-State-of-the-Art/(which reminds me, the spin-lock approach they try is probably fairly close to using an Atom in Clojure).
I made the changes that Christophe suggested, and added type hints for the HashMaps used in CLJDict, and the speed improvement is very impressive. To see the scalability of the different approaches, I graphed with various numbers of threads and read percentages: http://github.com/stuhood/clojure-conc/tree/master/results Two conclusions: 1. The overhead for STM with low contention is very reasonable, 2. Optimism + MVCC + persistence fall down when faced with a majority of writes. (see the 100% write case in the writes graph.) Thanks, Stu On Thu, Jan 15, 2009 at 2:52 PM, Christian Vest Hansen <karmazi...@gmail.com > wrote: > > On Thu, Jan 15, 2009 at 8:47 PM, Christian Vest Hansen > <karmazi...@gmail.com> wrote: > > On Thu, Jan 15, 2009 at 8:35 PM, Mark H. <mark.hoem...@gmail.com> wrote: > >> On Jan 15, 1:38 am, stuhood <stuh...@gmail.com> wrote: > >>> The benchmark contains 4 bi-directional dictionary implementations: > ... > >> > >> Doesn't Java already have a more optimized thread-safe hash table that > >> works by locking individual buckets, rather than the whole table? > >> Maybe I'm just confused ;-P > > Ah! but a mere hash table is not bi-directional :-) > > > -- > Venlig hilsen / Kind regards, > Christian Vest Hansen. > > > > --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en -~----------~----~----~----~------~----~------~--~---