RFR 8017540: Improve multi-threaded contention behavior of BigInteger.toString() radix conversion cache

Steven Schlansker stevenschlansker at gmail.com
Tue Jun 25 21:12:02 UTC 2013


On Jun 25, 2013, at 1:56 PM, Peter Levart <peter.levart at gmail.com> wrote:
> 
> Sorry, you are storing back when resizing. And you are resizing for every exponent that is bigger that previous requested (cached). This can lead to many resizings.


Hi everyone,

Apologies to butt in, and maybe this is a very stupid suggestion, but is the added complexity and potential for data race-introduced bugs worth the added efficiency over (for example) a ConcurrentMap<Long, BigInteger> with a key of "radix << 32 | exponent" ?

It is clearly not as efficient, but it does have the virtue that even mere mortals like myself can understand that it is safe code, and maybe it is "good enough"  :-)

Best,
Steven




More information about the core-libs-dev mailing list