$include_dir="/home/hyper-archives/boost/include"; include("$include_dir/msg-header.inc") ?>
From: Daniel James (daniel_at_[hidden])
Date: 2005-03-19 08:23:28
Peter Dimov wrote:
> As for table sizes being a power of two being a source of speedup, this
> is obviously only true when hv % 2^n doesn't produce collisions. If the
> key set doesn't already have this property, the cost of fixing it (in
> the general case, where it is not known which bits vary, something like
> x ^ (x % p1 + x * p2) needs to be used) may cancel the speedup obtained
> by using a 2^n table size.
I agree. This wasn't clear in my last mail, but when I wrote:
> A better approach to using a power of 2 might be to apply a further
> transformation to the hash value, which might take into account the
> current hash table size.
I meant that a power of 2 hash table should do this, and might be able
to do it better since it knows how many bits are required.
> On the other hand, it doesn't seem to cost us anything to apply x + (x
> >> 3) to our pointer hash function, so we might as well do it.
Okay, I'll do that.