> highest bits of hashed value
> affects only highest bits of resulting hash value. smth like this:
> (x+(x>>16))*123456791
> may improve hashing quality
(x+(x>>16)) ~= (x+x/65536) = x*(65537/65536)
x*(65537/65536)*123456791 = x*123458674.801132
So I'm not so sure about that.
>> Why don't you tune your hash to the data
> I do. I carefully test the multiplier on the real files,
> collecting various performance data! ;)
Somehow I think that you just manually try out and compare some
selected hash functions/parameters.
And I was talking about
1. Log the memory access pattern for some dataset
with unhashed contexts for addresses
(reads/writes; also other parameters like value size
and offset in hash cell)
2. Measure the processing speed for all 2^32 multiplier values
(or including other hash functions too), keeping some number
of best results.
3. Test the real compressor performance with these stored
best hash configurations.