In java.lang.BigDecimal implementation, we seem to declare several memebers such as "precision, stringCache" as "volatile". Even though volatile read is only slightly slower than normal read, but volatile write is much slower than normal store/write. Intel folks found that by removing the volatile uses, they noticed some meaningful differences on some benchmarks such as derby inside SPECjvm2007.
- relates to
JDK-7082971 More performance tuning of BigDecimal and other java.math classes