[systemd-devel] [PATCH 00/26] hashmap rewrite

Michal Schmidt mschmidt at redhat.com
Tue Oct 21 08:36:06 PDT 2014


On 10/20/2014 08:23 PM, Lennart Poettering wrote:
> On Thu, 16.10.14 09:50, Michal Schmidt (mschmidt at redhat.com) wrote:
>> Key changes that affect other code:
>>  - Sets and Hashmaps do not remember the insertion order anymore.
>>    They can still be iterated with *_FOREACH* or *_first*, but
>>    the order of entries is undefined.
> 
> Hmm, this means the iteration logic will have to iteratively skip over
> empty buckets to be able to enumerate?

Yes, to find occupied buckets, it does a sequential scan over the array
of DIB values. That should be pretty fast.

> I figure that isn't too bad if we scale the number of buckets by the
> size of the hashmap anyway.

Yes, though we never scale back down when many entries get removed from
a hashmap (unless ALL of them get removed). It does not seem to be
needed often.

>>  - There is a new type "LinkedHashmap" to use in the few cases where
>>    insertion order matters. The cases that I believe need it are
>>    converted in this patch series.
> 
> Sounds good. Don't like the name though. I think "OrderedHashmap"
> would be better, since for the user of the data structure the
> different is all about the order, right?

I saw the name "LinkedHashmap" used for this thing in Java/Android,
so I went with that. I can rename it, no problem.

Michal


More information about the systemd-devel mailing list