RFR 8203279 : Faster calculation of power of two

Ivan Gerasimov ivan.gerasimov at oracle.com
Thu May 17 02:30:00 UTC 2018


Hi David!


On 5/16/18 6:12 PM, David Holmes wrote:
> Hi Ivan,
>
> Surely you need to back this up with some performance numbers! And 
> verify not assume that numberOfLeadingZeroes is intrinsified!
>
Yes, good point.
Please find the benchmark with the results here:
http://cr.openjdk.java.net/~igerasim/8203279/00/MyBenchmark.java

It shows that the new version of HashMap. tableSizeFor() was 
(approximately) two times faster.

With kind regards,
Ivan

> Cheers,
> David
>
> On 17/05/2018 10:32 AM, Ivan Gerasimov wrote:
>> Hello!
>>
>> In a few places we have code that rounds an integer up to the nearest 
>> power of two.
>>
>> It is done with a series of RSHOTFs and ORs, but it can possibly be 
>> done faster with the use of Integer.numberOfLeadingZeros (assuming it 
>> is intrinsified).
>>
>> Would you please help review this trivial optimization:
>>
>> BUGURL: https://bugs.openjdk.java.net/browse/JDK-8203279
>> WEBREV: http://cr.openjdk.java.net/~igerasim/8203279/00/webrev/
>>
>> For HashMap.tableSizeFor() I created a simple test with a loop from 
>> Integer.MIN_VALUE to Integer.MAX_VALUE (including), to make sure the 
>> result is the same.
>>
>> For TimSort.ensureCapacity() I checked all positive values of 
>> minCapacity.
>>
>

-- 
With kind regards,
Ivan Gerasimov



More information about the core-libs-dev mailing list