gpt4 book ai didi

hash - 可以使用 CRC32C 作为基础构造一个 "good"哈希函数吗?

转载 作者:行者123 更新时间:2023-12-03 10:14:37 24 4
gpt4 key购买 nike

鉴于 SSE 4.2(英特尔酷睿 i7 和 i5 部分)包含 CRC32 指令,调查是否可以构建更快的通用哈希函数似乎是合理的。根据this CRC32 只有 16 位是均匀分布的。那么还有什么其他的转变可以用来克服这个问题呢?

更新
这个怎么样?只有 16 位适合散列值。美好的。如果您的表是 65535 或更少,那就太好了。如果不是,则通过 Nehalem POPCNT(人口计数)指令运行 C​​RC 值以获取设置的位数。然后,将其用作表数组的索引。如果您的 table 位于 1 毫米条目以南,则此方法有效。我敢打赌,这比性能最好的哈希函数更便宜/更快。现在 GCC 4.5有一个 CRC32 内在它应该很容易测试......如果我有大量的空闲时间来研究它。

大卫

最佳答案

其他答案中提到的文章基于有缺陷的 crc32 代码得出了错误的结论。 谷歌的排名算法还没有根据科学准确性进行排名。

与引用文章相反"Evaluating CRC32 for hash tables"结论, CRC32 和 CRC32C 可用于哈希表 .作者的示例代码在 crc32 表生成中存在 bug。修复 crc32 表,使用相同的方法得到令人满意的结果。此外,CRC32 指令的速度使其成为许多情况下的最佳选择。使用 CRC32 指令的代码在峰值时比最佳软件实现快 16 倍。 (请注意,CRC32 与 intel 指令实现的 CRC32C 并不完全相同。)

CRC32 显然不适合加密使用。 (32位是蛮力的笑话)。

关于hash - 可以使用 CRC32C 作为基础构造一个 "good"哈希函数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2694740/

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