Messages in this thread | | | Date | Wed, 14 Apr 1999 22:15:36 -0500 | From | "Paul F. Dietz" <> | Subject | Re: more on hash functions |
| |
Chuck Lever wrote:
> #define FIRSTBYTE(x) (0xff & (x)) > #define SECNDBYTE(x) (0xff & ((x)>>8)) > #define THIRDBYTE(x) (0xff & ((x)>>16)) > > #define hashfn(key) ( (rand1[FIRSTBYTE(key)] << 4) ^ \ > (rand2[SECNDBYTE(key)] << 2) ^ \ > (rand1[THIRDBYTE(key)]) ) > > to generate a 12-bit hash table index. this way i don't have to mask off > extra bits as the final step, and i can use daintily sized random tables.
This is also clearly bad. Suppose you're hashing keys that have a common third byte? The low two bits of your hash values will be constant.
You really have to make every bit of the result depend on every bit in the key.
Paul
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.rutgers.edu Please read the FAQ at http://www.tux.org/lkml/
| |