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?
- M
--
Manik Surtani
manik(a)jboss.org
twitter.com/maniksurtani
Platform Architect, JBoss Data Grid
http://red.ht/data-grid