For the last 4 months I have been working on a Java based STM implementation. With 2 main priorities:
- predictability (especially the concurrency control part)
- performance
One of the performance test is a simple producer consumer problem with 2 threads and with a stack in between and with my dual core laptop I get roughly 160.000 transactions per second. If I execute a similar test with classic concurrency control and a Stack (a Deque to be honest because a java.util.Stack has no blocking support even though it is thread-safe) I get roughly 5.000.000 transactions per second. So there is quite some room for improvement.