On 2019/06/28 16:43:23, Ryan Blue <[email protected]> wrote: 
> I agree with Zoltan. Since we want to ensure compatibility, it would be
> better to choose the best option now instead of making everyone support two
> options forever.

I'd guess there probably isn't a single best option. I suspect there's a 
tradeoff between ease of implementation and speed, for instance, since I expect 
it's easy to find an MD5 library in most programming languages and operating 
systems, yet MD5 is very slow compared to non-cryptographic hash functions 
designed for speed like xxhash.

There's also a significant amount of variability across processor families 
(64-bit multiply-shift in ARM vs x86-64) or even different versions of the same 
processor family (CLHash in Haswell vs. Sandy Lake). There are also quality 
tradeoffs that depend on the average bye length of the input (FNV vs vhash) or 
how much L1 cache the user wants to use for the hash function (tabulation 
hashing vs. multiply-shift).

To deal with this level of ambiguity, I'd suggest that v1 should include a hash 
function that works well for certain common environments. As far as I know, 
murmur and xxhash would both fit that bill.

Reply via email to