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

Reply via email to