On 04/18/2013 09:35 PM, Manik Surtani wrote: > Guys, > > Based on some recent micro benchmarks I've been doing, I've seen: > > MapStressTest configuration: capacity 100000, test running time 60 seconds > Testing mixed read/write performance with capacity 100,000, keys 300,000, > concurrency level 32, threads 12, read:write ratio 0:1 > Container CHM Ops/s 21,165,771.67 Gets/s 0.00 Puts/s > 21,165,771.67 HitRatio 100.00 Size 262,682 stdDev 77,540.73 > Container CHMV8 Ops/s 33,513,807.09 Gets/s 0.00 Puts/s > 33,513,807.09 HitRatio 100.00 Size 262,682 stdDev 77,540.73 > > So under high concurrency (12 threads, on my workstation with 12 hardware > threads - so all threads are always working), we see that Infinispan's CHMv8 > implementation is 50% faster than JDK6's CHM implementation when doing puts. > > We use a fair number of CHMs all over Infinispan's codebase. By default, > these are all JDK-provided CHMs. But we have the option to switch to our > CHMv8 implementation by passing in -Dinfinispan.unsafe.allow_jdk8_chm=true. > > The question is, should this be the default? Thoughts, opinions?
The JDK's concurrency code - especially CHM - changes all the time. You'd be very well-served, in my opinion, to go with something like CHMv8 just because you could be so much more sure that you'll have more consistent (and possibly better, but definitely more consistent) performance across all JVMs, instead of being at the mercy of whatever particular implementation happens to run on whatever JVM. -- - DML _______________________________________________ infinispan-dev mailing list infinispan-dev@lists.jboss.org https://lists.jboss.org/mailman/listinfo/infinispan-dev