Performance of hashes and associative arrays
Manfred Nowak
svv1999 at hotmail.com
Sun Nov 11 03:38:28 PST 2012
Jakse wrote:
> It would also be interesting to have ideas for the general
> case
Yes, ideas might be interesting. :-)
A root of "good" hashing is incorporated in algorithm2 of your
posting:
spread the values produced by the hash function uniformly over
the interval size_t.min .. size_t.max.
Therefore:
Compute the hash value for a given key by multiplying each byte
of the key with a factor, which increases from the byte with
lowest significance to the byte with highest significance; of
course add the results.
Remarks:
a)
Because of the general case: assume that the original key
contains much redundance. Therefore do not use the bytes of the
original key but compute a ( at least close to) lossless
compression of the original key.
b)
The factors in the factor list should be primes for spreading
the hash value uniformly over the intended range
c)
The quotint of two consecutives primes in the factor list should
be greater than 256, because the used key might not contain any
reduundancy.
-manfred
More information about the Digitalmars-d-learn
mailing list