稳定复现的 HashMap 陷阱
当我们看了很多哈希函数的介绍并切换到一个你认为更快的哈希函数上面时,大部分代码都获得了预期的速度提升,但有些部分却莫名其妙地变慢了很多,尤其是在处理大型 hashMap 时。
如果这听起来很熟悉,那么您可能遇到了稳定复现的 HashMap 陷阱。
Google SwissTable 是 2017 年 CppCon 上被发表的一个高性能的 hashTable 。
从 Rust 1.36 开始,SwissTable 就是 Rust HashMap 的标准库实现。
虽然它有不错的性能,但 SwissTable 旨在以性能为代价抵御一类 HashDoS 攻击。
如果您关心性能并且不关心安全问题,切换到类似 FxHasher 或者 ahash 可以显着提高性能。
然而,这个建议的代价却很少有人提及 —— 一些 O(n) hashTable 操作,包括反序列化,在一些 case 下它的时间复杂度有可能会升级到 O(n**2)。
下面博文会给大家带来测试 case 以及为什么会发生如此大的性能差距
https://morestina.net/blog/1843/the-stable-hashmap-trap
CnosDB 2.0 发布
特色功能:
专为时序数据设计的存储引擎,优化写操作,支持删除和更新操作;
压缩算法由用户灵活指定,压缩比可调;
基于 Apache Arrow 及 DataFusion 实现了查询引擎;
支持标准 SQL,支持 Schemaless 写入;
多索引优化了查询效率;
生态友好,支持 RESTful 接口,支持 Telegraf、Grafana 等通用第三方生态组件。
快速上手指南:http://docs.cnosdb.com
GitHub仓库: https://github.com/cnosdb/cnosdb
审核编辑:刘清
-
SQL
+关注
关注
1文章
789浏览量
46366 -
rust语言
+关注
关注
0文章
57浏览量
3245
原文标题:【Rust日报】2022-11-09 稳定复现的 HashMap 陷阱
文章出处:【微信号:Rust语言中文社区,微信公众号:Rust语言中文社区】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
CMMB信号发生器性能测试原理
FX2重新枚举会发生什么
使用FVR会发生什么?
搭建完Keil工程后进行编译后发生如下的错误
在DevEco Studio IDEA中使用华为云iot应用侧开发Java Demo时发生如下错误
有没有人知道为什么调试模式会对RAM保留产生如此大的影响?
为什么在另一台计算机上加载项目时“ioc”文件的内容会发生如此巨大的变化?
那些已经发生或会发生的移动医疗猜想
游戏本与轻薄本的性能测试,差距究竟有多大
SpinalHDL Simulation性能提升测试

测试case为什么会发生如此大的性能差距
评论