RFR (XXS) 8080535: (ch) Expected size of Character.UnicodeBlock.map is not optimal
chris.hegarty at oracle.com
Sat May 16 19:52:26 UTC 2015
> On 16 May 2015, at 01:59, Ivan Gerasimov <ivan.gerasimov at oracle.com> wrote:
> On 16.05.2015 2:18, Martin Buchholz wrote:
>> I don't think you're taking the load factor into account.
> Hm. You're right, HashMap's constructor expects the capacity as the argument.
> I was confused by IdentityHashMap, whose constructor expects the maximum number of elements to be inserted.
>> You want to check (via reflection) that the size of the backing array is unchanged if you copy the map with new HashMap(map).
> Sorry, I didn't get it. How could we detect that the initial capacity wasn't big enough, if we hadn't stored it?
>> I wouldn't bother defining the constant.
> I only need it in the regression test, to check whether it was sufficient.
> Here's the updated webrev:
> http://cr.openjdk.java.net/~igerasim/8080535/01/webrev/ <http://cr.openjdk.java.net/~igerasim/8080535/01/webrev/>
This looks much better. Trivially I’d calculate the initial size like:
510 / 0.75 + 1.0f ( plus 1 )
… but your regression test should prove that the plus one is not needed.
Maybe a comment that the 0.75 is the default load factor from HashMap.
The constant could be removed and the ‘510’ be used directly in the test. Since the test is whitebox.
The test is fine, but could be a little less obscure if it looked at the table size, rather than the equality. But what you have is fine.
> Comments, suggestions are welcome!
> Sincerely yours,
>> On Fri, May 15, 2015 at 4:01 PM, Ivan Gerasimov <ivan.gerasimov at oracle.com <mailto:ivan.gerasimov at oracle.com>> wrote:
>> When constructing the map, the expected size is specified to be
>> 256, but then 510 elements are inserted.
>> A new whitebox test is provided, so the next time the number of
>> entries grows, the expected size will not be forgotten.
>> Would you please help review this fix?
>> BUGURL: https://bugs.openjdk.java.net/browse/JDK-8080535
>> WEBREV: http://cr.openjdk.java.net/~igerasim/8080535/00/webrev/
>> Sincerely yours,
More information about the core-libs-dev