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

kez*_*zos 4 rust

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

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

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

Vla*_*eev 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());
}
Run Code Online (Sandbox Code Playgroud)

您需要使用FarmHasher库创建具有非默认哈希状态的映射.FarmHasher实现HasherDefault特征,因此它可以使用DefaultState.

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