MCPcopy Create free account
hub / github.com/Tencent/phxqueue / MurmurHash64

Function MurmurHash64

phxqueue/comm/utils/hash_util.cpp:28–68  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

26using namespace std;
27
28uint64_t MurmurHash64(const void *key, size_t len, uint64_t seed) {
29 const uint64_t m = 0xc6a4a7935bd1e995LLU;
30 const int r = 47;
31
32 uint64_t h = seed ^ (len * m);
33
34 const uint64_t * data = (const uint64_t *)key;
35 const uint64_t * end = data + (len/8);
36
37 while(data != end)
38 {
39 uint64_t k = *data++;
40
41 k *= m;
42 k ^= k >> r;
43 k *= m;
44
45 h ^= k;
46 h *= m;
47 }
48
49 const unsigned char * data2 = (const unsigned char*)data;
50
51 switch(len & 7)
52 {
53 case 7: h ^= uint64_t(data2[6]) << 48;
54 case 6: h ^= uint64_t(data2[5]) << 40;
55 case 5: h ^= uint64_t(data2[4]) << 32;
56 case 4: h ^= uint64_t(data2[3]) << 24;
57 case 3: h ^= uint64_t(data2[2]) << 16;
58 case 2: h ^= uint64_t(data2[1]) << 8;
59 case 1: h ^= uint64_t(data2[0]);
60 h *= m;
61 };
62
63 h ^= h >> r;
64 h *= m;
65 h ^= h >> r;
66
67 return h;
68}
69
70
71} // namespace utils

Callers 3

GetStoreIDMethod · 0.85
mainFunction · 0.85
GetQueueByAddrScaleMethod · 0.85

Calls

no outgoing calls

Tested by 1

mainFunction · 0.68