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