【Rust日报】2022-11-09 稳定复现的 HashMap 陷阱

news/2024/7/20 2:21:29 标签: java, python, 数据库, mysql, 小程序

稳定复现的 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

直播间

https://live.bilibili.com/h5/23768194?broadcast_type=0&is_room_feed=1&spm_id_from=333.999.0.0


From 日报小组 侯盛鑫 mock

社区学习交流平台订阅:

  • Rust.cc 论坛: 支持 rss

  • 微信公众号:Rust 语言中文社区


http://www.niftyadmin.cn/n/4648.html

相关文章

JavaScript 68 JavaScript Browser BOM 68.8 JavaScript Cookies

JavaScript 文章目录JavaScript68 JavaScript Browser BOM68.8 JavaScript Cookies68.8.1 什么是 cookie?68.8.2 通过 JavaScript 创建 cookie68.8.3 通过 JavaScript 读取 cookie68.8.4 通过 JavaScript 改变 cookie68.8.5 通过 JavaScript 删除 cookie68.8.6 Cook…

【云原生之kubernetes实战】在k8s集群环境下部署Tomcat应用

【云原生之kubernetes实战】在k8s集群环境下部署Tomcat应用 一、检查本k8s集群环境1.检查k8s版本2.检查工作节点系统版本二、检查k8s集群状态1.检查工作节点状态2.检查系统pod状态三、部署mysql服务1.编辑mysql.yaml2.应用mysql.yaml3.查看pod状态四、测试连接mysql数据库1.查看…

SpringCloud 服务限流与熔断

目录 学习SpringCloud指南 ☆ ☆ ☆ ☆ ☆ 小白学习SpringCloud 使用与Nacos 小白学习SpringCloud 远程通信【OpenFeign】 小白学习SpringCloud 配置中心【Nacos_Config】 小白学习SpringCloud 网关【Gateway】 1. 限流 2. Gateway限流的实现 2.1 导入pom依赖 2.2 添加red…

【springboot】你了解@Autowired 和 @Resource吗?@Autowired 和 @Resource深入分析

Autowired 和 Resource深入分析“认祖归宗”--Autowired 和 Resource来源“通过现象看本质”--Autowired 和 Resource作用和区别1.现象一:一个业务接口只对应一个业务实现类2.现象二:一个业务接口 对应 两个或多个业务实现类我们在开发中,一直…

突破限制, 访问其它 Go package 中的私有函数

这里填写标题1. 突破限制, 访问其它 Go package 中的私有函数1.1. 将 exported 类型变为其它 package 不可访问1.2. 访问其它 package 中的私有方法1.3. 访问其它 package 中的 struct 私有字段1.4. 更 hack 的方法1. 突破限制, 访问其它 Go package 中的私有函数 熟悉 C、Jav…

【数据结构】循环链表的增删查改

文章目录前言一、什么是带头双向循环链表二、带头双向循环链表的实现2.1、动态开辟一个空间2.2、初始化与打印2.3、插入操作尾插头插在pos之前插入2.4、删除操作尾删头删删除pos处的位置2.4、查找与销毁操作前言 本文我们所要实现的是循环链表,即带头双向循环链表 一…

事务ACID与隔离级别

事务ACID与隔离级别1. 什么是事务?2. 什么是ACID?3. 如何实现ACID?4. 什么是脏读、幻读、不可重复读?5. 事务的隔离级别6. 多版本并发控制(MultiVersion Concurrency Control)1. 什么是事务? 事…

栈的简单实现及应用

栈的简单实现及其应用什么是栈?栈的分类栈的数据结构栈的基本操作栈的初始化栈的销毁入栈操作出栈和栈空的判断获取栈顶元素获取栈的元素个数头文件总结栈的应用什么是栈? 栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除…