Some generic STM bits of wisdom:

- STMs in "standard" languages (e.g. C, C++) suffer from having to
track all memory references.  THis overhead means the STM code
typically starts 3x to 10x slower than non-STM code, which is a pretty
stiff penalty to recover from.  If you're only getting a 3x speedup on
your 4-core machine, but you're starting 3x down then you're not
ahead.
- Abort/retry rates can commonly exceed 90% (e.g. 1-in-10 attempts
succeeds)
- There are very few languages w/real TM support, so "good" TM writing
styles are still being figured out
- THere are very few TM implementations, so "good" STM implementations
are still being figured out - even the "good" feature set isn't really
well known.

- Clojure dodges several of these bullets (no need to track
everything; already paying a high abstraction penalty (commonly), so
the STM slowdown isn't really interestingly large (e.g. it's 3x over
some base speed, not 3x on top of Clojure)

- I DO have a Clojure program where the retry/fail rate approaches
99.99%
- There are NOT good tools to figure out why TM's fail - if you have a
high fail rate it's often hard to figure out even that!

Cliff

--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~---

Reply via email to