gpt4 book ai didi

c++ - x86 或 x64 上的散列之间的区别

转载 作者:太空狗 更新时间:2023-10-29 20:47:40 28 4
gpt4 key购买 nike

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

我目前只提供为 x86 编译的程序,并尽量保持代码的通用性,因此我在 x64 上运行程序时从未遇到过问题。

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

MurmurHash3_x86_32
MurmurHash3_x86_64
MurmurHash3_x86_128

MurmurHash3_x64_32
MurmurHash3_x64_64
MurmurHash3_x64_128

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

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

最佳答案

编辑:在查看 murmurhash3 documentation 后更改了所有内容.

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

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

关于c++ - x86 或 x64 上的散列之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5050283/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com