我试图使用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中生成密钥?如果这是一个复杂的过程,有人能指出一个很好的例子吗?
答案 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
实施Hasher
和Default
个特征,因此可以与DefaultState
一起使用。
请注意,其他配置功能不稳定,因此您只能在夜间启用相应功能的情况下执行此操作。