更快的哈希值会带来多大的差异

主要观点:作者有一段做纯计算的 Rust 代码,为提升速度用flamegraph进行了性能分析,希望找到热点(hot spots)进行优化。发现花费 23.25%总 CPU 时间在<std::hash::random::DefaultHasher as core::hash::Hasher>::write函数上,是因为与std::collections::{HashMap, HashSet}来回交互浪费时间,用ahash::{AHashMap, AHashSet}替换内置哈希集合后,大计算任务从 67 分钟减少到 55 分钟,提升了 18%,仅修改了几行代码。std::collections::HashMapahash::AHashMap慢是因为内置哈希过程要提供安全性,对解决组合问题无用,还有其他哈希集合实现,可通过使用导入别名方便试验不同哈希器,如用use std::collections::{HashMap as Dict, HashSet as Set}use ahash::{AHashMap as Dict, AHashSet as Set}来切换,此技术的好处是让代码更像 Python,但也有弊端。
关键信息:Rust 代码性能优化、flamegraph、热点、std::collectionsahash对比、导入别名
重要细节:提到花费 23.25%时间在特定函数上、不同哈希器适用于不同数据类型等

阅读 27
0 条评论