Hi Christian,

Christian Thalinger a écrit :
On Mon, 2009-02-16 at 14:33 -0800, Xiaobin Lu wrote:
Webrev: http://webrev.invokedynamic.info/xiaobin.lu/6622432/

6622432: RFE: Performance improvements to java.math.BigDecimal

<snip>

As you know, the division operation is expensive and the algorithm to compare with the ten's power array can be made more efficiently by correlating the bit length of the number with the index to the array so that the time to compute the precision is O(1) rather than being O(n) (where n is the length of the array). And that is exactly what we are doing in the webrev. First, we get the bit length of the number and then multiply it with log2 (10 base), use the result to index to a dynamically expanded ten's power array so that division operation can be avoided completely.

Actually I'm not reviewing the webrev but I have some questions.

1. Is bitCount() called often and performance critical?  There is a RFE
(6378821) to intrinsify it and I am thinking about to implement it.
It's not related to BigInteger but the fastest multi-dispatch algorithm that I know relies heavily on
bitCount too (on Long.bitCount).
So you have my vote :)
2. Why is BigInteger using it's own implementation of bit-count
(bitCnt()) instead of using Integer.bitCount()?
because Integer.bitCount() was introduced in 1.5 and BigInteger in 1.4.
BigInteger was not retrofited.
-- Christian
Rémi

Reply via email to