I want to implement a hashmap into my code, so I decided to stick to murmurhash3
I currently only deliver my programs compiled for x86 and have tried to keep the code general so I've never had trouble running the programs on x64.
Now I've looked at the header files of murmurhash and the library offers following functions:
MurmurHash3_x86_32
MurmurHash3_x86_64
MurmurHash3_x86_128
MurmurHash3_x64_32
MurmurHash3_x64_64
MurmurHash3_x64_128
Does this mean I have to use the x64 functions and provide a x64 executable to be able to use this hash library on x64 systems? Or can I simply use the x86 version, and just encounter poorer performance?
Am I correct in thinking that the _32 _64 _128 bit versions only mean that more bit versions offer better distribution?
Edit: Changed everything after looking at the murmurhash3 documentation.
First, the _x86 variants are portable hash algorithms. The _32/_64/_128 indicates the width of the hash in bits. Generally _32 should be fine as long as your hash algorithm is smaller than 232 buckets.
The _x64 variants are an entirely different family of hash algorithms. All the _x64 variants are based on the
_x64_128
implementation - a 128-bit hash. They then throw away part of the hash to get the _32 and _64 bit sizes. This may or may not be faster than the _x86 variant - the documentation claims some impressive speedups, though. Note, however, that it's very likely to get different hash values than the x86 variant.