MetroHash, 异常的快速和统计的哈希函数

分享于 

4分钟阅读

GitHub

  繁體 雙語
Exceptionally fast and statistically robust hash functions
  • 源代码名称:MetroHash
  • 源代码网址:http://www.github.com/jandrewrogers/MetroHash
  • MetroHash源代码文档
  • MetroHash源代码下载
  • Git URL:
    git://www.github.com/jandrewrogers/MetroHash.git
    Git Clone代码到本地:
    git clone http://www.github.com/jandrewrogers/MetroHash
    Subversion代码到本地:
    $ svn co --depth empty http://www.github.com/jandrewrogers/MetroHash
    Checked out revision 1.
    $ cd repo
    $ svn up trunk
    

    MetroHash: 更快,更好的哈希函数

    MetroHash是一组非加密的哈希函数,用于非加密的非加密。 除了出色的性能外,它们还被用于算法生成。 已经发布的哈希函数集将在未来被扩展,从一个非常大的哈希函数集中被选中。

    • 用于批量散列的最快通用函数。
    • 用于小,可变长度键的最快通用函数。
    • 与MD5加密哈希类似的稳健统计偏置配置文件。
    • 哈希可以增量构造( )
    • 当前可用的64位,128位 和 128位 CRC变量。
    • 针对现代 x86-64 microarchitectures进行优化。
    • 优雅,compact,可以读函数。

    你可以在这里阅读更多关于设计和历史的详细信息。

    新闻

    27 2015年07月

    两个新的64位 和 128位 算法增加了增量构造哈希的能力。 除了支持增量构造之外,这些算法还略优于以前的版本。

    重大的变化是这些新算法被实现为支持增量和无状态哈希的C++ 类。 这些类还有一个 static 方法,用于根据构建在类中的测试向量来验证实现。 实现现在完全由它们各自的头 比如" metrohash128.h"包含。

    注意:CRC版本的增量版本正在进行中,但该版本不包含在该推送器。

    无状态哈希的用法示例

    MetroHash128::Hash(key, key_length, hash_ptr, seed)

    增量哈希的使用示例

    MetroHash128 hasher;
    hasher.Update(partial_key, partial_key_length);
    ...
    hasher.Update(partial_key, partial_key_length);
    hasher.Finalize(hash_ptr);

    一个 Initialize(seed) 方法允许重用hasher对象。

    27 2015年05月

    初始发行版中包含六个哈希函数:

    • 64位 哈希函数,"metrohash64_1"和"metrohash64_2""
    • 128位 哈希函数,"metrohash128_1"和"metrohash128_2""
    • 使用CRC指令,"metrohash128crc_1"和metrohash128crc_2的128位 哈希函数"

    同一家族中的哈希函数在统计上是唯一的。 换句话说,如果你需要对 bloom filter使用两个散列函数,那么可以在同一个实现中使用"metrohash64_1"和"metrohash64_2"而不。 每个家庭都可以生成一组统计独特的函数。 这里 repo 中的函数是专门为 public 版本生成的。

    哈希函数生成软件对可移植性没有任何影响。 尽管这些哈希函数应该很容易地移植到大型端点 microarchitectures,但并没有对它们进行测试。 ARM64 microarchitectures可能是一个值得的散列函数生成目标,如果我有硬件。


    STA  fast  STAT  FUNC  函数  哈希  
    相关文章