indeed during the early 5.1 CRs we spotted some severe performance problems; the performance issues where all fixed before the Final, and we kept improving performance even more every day, so the fastest should be version 5.1.2.CR2 (released yesterday).

Would you mind trying an update? Please update both Infinispan and JGroups.

Another thing: if your test runs only 6 million transactions it will finish way before the JVM has warmed up properly: on an average 4 cores Xeons it can peak above the million read transactions per second, but it takes at least 20 minutes of high load before it gets to that. (will be slower for writes: with replication read is always a local lookup).

A comment on your code: I don't see you starting transactions? Consider Infinispan understands "real" JTA transactions, so you could get even better performance wrapping your startTransaction method in a transaction, as it will batch all update operations across a reduced amount of wire commands.

I haven't had a look at your tests as yet, but can you confirm that in both cases you are getting synchronous, 2-phase transactions? This is the default in Infinispan and I know that it is *not* the default in EHCache. Similarly, EHCache defaults to asynchronous serialization which again isn't the default in Infinispan. Just making sure you're doing an apples-to-apples comparison.