[m-dev.] hash tables in standard library

Ralph Becket rafe at csse.unimelb.edu.au
Fri Aug 15 16:12:11 AEST 2008

Jonathan Morgan, Friday, 15 August 2008:
> Or possibly (depending on how you implement it) just resize the hash
> table.  There will be different tradeoffs for different
> implementations, and I'm sure all of these ideas have been tried
> before (I know in 253 using a balanced tree or some other log n search
> mechanism was suggested as one way to prevent linear searches).  I'm
> not sure what it is best for a standard library to do - I just know if
> I were designing a generic hash table I would use separate chaining,
> because it seems more logical than open addressing to me.  The Python
> implementers obviously think differently, and their dictionary is
> pretty fast and has been very carefully tuned to suit their usage
> pattern.

I did some benchmarking when I wrote the hash_table module and double
hashing was definitely a bit faster.  I'm not sure how to gracefully
handle deletes, other than to add a "deleted" bucket state to the
existing "empty" and "occupied" states.

I think for simplicity and robustness I'd be inclined to use single
hashing now, however.

-- Ralph
mercury-developers mailing list
Post messages to:       mercury-developers at csse.unimelb.edu.au
Administrative Queries: owner-mercury-developers at csse.unimelb.edu.au
Subscriptions:          mercury-developers-request at csse.unimelb.edu.au

More information about the developers mailing list