x86或x64上的散列之间的差异

cpp*_*nda 3 c++ hash murmurhash

我想在我的代码中实现一个hashmap,所以我决定坚持使用murmurhash3

我目前只提供为x86编译的程序,并试图保持代码通用,所以我从来没有遇到过在x64上运行程序的麻烦.

现在我查看了murmurhash的头文件,该库提供了以下功能:

MurmurHash3_x86_32
MurmurHash3_x86_64
MurmurHash3_x86_128

MurmurHash3_x64_32
MurmurHash3_x64_64 
MurmurHash3_x64_128 
Run Code Online (Sandbox Code Playgroud)

这是否意味着我必须使用x64函数并提供x64可执行文件才能在x64系统上使用此哈希库?或者我可以简单地使用x86版本,只是遇到较差的性能?

我是否认为_32 _64 _128位版本只是意味着更多位版本提供更好的分发?

bdo*_*lan 6

编辑:查看murmurhash3文档后更改了所有内容.

首先,_x86变体是可移植的哈希算法._32/_64/_128以位为单位表示散列的宽度.通常_32应该没问题,只要您的哈希算法小于2 32个桶.

_x64变体是完全不同的散列算法系列.所有_x64变体都基于_x64_128实现 - 一个128位散列.然后,他们扔掉部分哈希值以获得_32和_64位大小.这可能会或可能不会比_x86更快 - 文档声称有一些令人印象深刻的加速.但请注意,它很可能获得与x86变体不同的哈希值.