What integer hash function are good that accepts an integer hash key?

前端 未结 11 1622
孤街浪徒
孤街浪徒 2020-11-22 17:23

What integer hash function are good that accepts an integer hash key?

11条回答
  •  心在旅途
    2020-11-22 17:57

    I have been using splitmix64 (pointed in Thomas Mueller's answer) ever since I found this thread. However, I recently stumbled upon Pelle Evensen's rrxmrrxmsx_0, which yielded tremendously better statistical distribution than the original MurmurHash3 finalizer and its successors (splitmix64 and other mixes). Here is the code snippet in C:

    #include 
    
    static inline uint64_t ror64(uint64_t v, int r) {
        return (v >> r) | (v << (64 - r));
    }
    
    uint64_t rrxmrrxmsx_0(uint64_t v) {
        v ^= ror64(v, 25) ^ ror64(v, 50);
        v *= 0xA24BAED4963EE407UL;
        v ^= ror64(v, 24) ^ ror64(v, 49);
        v *= 0x9FB21C651E98DF25UL;
        return v ^ v >> 28;
    }
    

    Pelle also provides an in-depth analysis of the 64-bit mixer used in the final step of MurmurHash3 and the more recent variants.

提交回复
热议问题