如何使用farmhash算法代替默认值

时间:2015-08-26 10:22:29

标签: rust

我试图使用farmhash (1.1.2)替代生锈默认的hashmap哈希算法(Siphash?),看看我是否可以获得任何速度提升。我已经开始使用twox-hash并且这提高了速度,虽然我也想和farmhash一起测试,只是为了比较。 farmhash文档仅提供类似于此的简短示例:

let value: &str = "somestringkeyorsomthing";
let res64 = farmhash::hash64(&value.as_bytes());
println!("{:?}", res64)
>>> 12095987461079705245

如何使用此方法在hashmap中生成密钥?如果这是一个复杂的过程,有人能指出一个很好的例子吗?

1 个答案:

答案 0 :(得分:5)

以下是您的工作方式:

#![feature(hashmap_hasher)]
extern crate farmhash;

use std::collections::HashMap;
use std::collections::hash_state::DefaultState;

use farmhash::FarmHasher;

fn main() {
    let hm: HashMap<u32, u32, DefaultState<FarmHasher>> = 
        HashMap::with_hash_state(DefaultState::default());
}

您需要使用库中的FarmHasher创建具有非默认哈希状态的地图。 FarmHasher实施HasherDefault个特征,因此可以与DefaultState一起使用。

请注意,其他配置功能不稳定,因此您只能在夜间启用相应功能的情况下执行此操作。