RFR (S) Allow ResourceHashtable size to be specified at runtime

Ioi Lam ioi.lam at oracle.com
Wed Nov 14 17:09:58 UTC 2018



On 11/13/18 4:05 PM, Jiangli Zhou wrote:
> Hi Ioi,
>
> The change looks reasonable to me in general. It would be helpful to 
> see the performance difference with the expendable table. Do you have 
> any data when large number of classes are loaded (>20000)? How much 
> saving does it provide?
>

Hi Jiangli, thanks for the review. For dumping 30292 classes:

BEFORE: 93.971 sec
AFTER:  34.761 sec

Thanks
- Ioi

> Thanks,
>
> Jiangli
>
>
> On 11/8/18 10:35 PM, Ioi Lam wrote:
>> https://bugs.openjdk.java.net/browse/JDK-8213587
>> http://cr.openjdk.java.net/~iklam/jdk12/8213587-configurable-resource-hash.v01/ 
>>
>>
>> TL;DR: -- add a subclass to ResourceHashtable to allow the table size 
>> to be
>>           dynamically specified when the table is constructed.
>>
>>
>>         *** C++ template guru alert ***
>>
>>
>> I don't know much about C++ templates, so my attempt on doing this 
>> may be
>> ill-advised.
>>
>> I *think* that with my patch, the performance of existing code, which 
>> uses
>> a statically-defined SIZE,  should not be affected, as the C++ compiler
>> should be able to constant-propagate and reduce the new code:
>>
>>   ALWAYSINLINE unsigned size() const {
>>     if (SIZE != CONFIGURABLE_SIZE) {
>>       return SIZE;
>>     } else {
>>       return _configured_table_size;
>>     }
>>   }
>>
>>   ALWAYSINLINE Node** get_table() const {
>>     if (SIZE != CONFIGURABLE_SIZE) {
>>       return (Node**)(&_static_table[0]);
>>     } else {
>>       return _configured_table;
>>     }
>>   }
>>
>>   Node** lookup_node(unsigned hash, K const& key) {
>>     unsigned index = hash % size();    <-----
>>     Node** table = get_table();
>>     Node** ptr = &table[index];   <-----
>>
>> back to the old code:
>>
>>   Node** lookup_node(unsigned hash, K const& key) {
>>     unsigned index = hash % SIZE;      <-----
>>     Node** ptr = &_table[index];       <-----
>>
>>
>> If anyone has a better way of doing this, I'd love to hear it!
>>
>> Thanks!
>> - Ioi
>>
>>
>>
>>
>



More information about the hotspot-dev mailing list