On Tue, Aug 15, 2017 at 15:03:07 +0200, Michal Privoznik wrote:
On 08/15/2017 02:01 PM, Peter Krempa wrote:
> On Mon, Aug 14, 2017 at 20:46:10 -0400, John Ferlan wrote:
>> On 08/03/2017 04:50 AM, Peter Krempa wrote:
[...]
>> The next thing I considered was using a prime number as the
table bucket
>> size and it seems by just doing that will cause qemumonitorjsontest to
>
> What would be the benefit of such change? I don't really see how prime
> numbers would improve anything performance-wise.
Because if your hash function is stupid it can cluster all the keys
together. Primes, however, have way fewer divisors, therefore clustering
is harder to achieve. Of course, you can construct a hash function so
that it's utterly stupid (e.g. {return 4;}) and then all of our
optimizations are thrown out of the window. But I believe that using
prime numbers for table size is advised in the literature too.
Apparently, wiki mentions this fact too:
https://en.wikipedia.org/wiki/Hash_table#Choosing_a_hash_function
Our hash function is quite complex. I doubt that you will be able to
achieve any measurable performance benefit by this change. Especially
due to the random factor we are using.
The hash function used in tests is dumb, but it's dumb on purpose. I
really doubt that messing with this is worth.