On May 18, 2015, at 8:52 PM, Martin Buchholz <marti...@google.com> wrote:

> On Fri, May 15, 2015 at 5:59 PM, Ivan Gerasimov <ivan.gerasi...@oracle.com>
> wrote:
> 
>> 
>> 
>> On 16.05.2015 2:18, Martin Buchholz wrote:
>> 
>> I wouldn't bother defining the constant.
>> 
>> 
>> I only need it in the regression test, to check whether it was
>> sufficient.
>> 
> 
> The problem you're trying to solve is (a small amount of) startup overhead.
> Don't introduce __more__ startup overhead (another constant in the class
> file) just to make your change more testable.
> 

I agree, the use of the constant just for test purposes made me uncomfortable. 
Although the startup up cost for a constant would be far less than an 
additional resize of the map. Still i would prefer another way.

For now i would just bump up the initial capacity to 512, since that is what 
the table size will be and the number entries should be between 193 and 384 
(256 * 0.75  + 1 and 512 * 0.75 respectively), state that in a comment. IMO the 
test for HashMap resizes should be a general test (perhaps it exists already?).

Paul.

> If you're serious about reducing overhead for static maps, you could:
> - write a java agent that verifies that all maps stored in static fields
> are never resized or oversized, and run all jtreg tests with that agent
> - use a true immutable static compact map implementation, perhaps optimized
> for String keys, in the spirit of
> jdk/src/share/classes/sun/util/PreHashedMap.java
> - initialize the static maps from a binary blob stored in a resource
> instead of from java code
> 
> but any of those is a lot of work.  I would just check in the fix to
> s/256/BETTER_SIZE/

Reply via email to