穩(wěn)定復現的 HashMap 陷阱
當我們看了很多哈希函數的介紹并切換到一個你認為更快的哈希函數上面時,大部分代碼都獲得了預期的速度提升,但有些部分卻莫名其妙地變慢了很多,尤其是在處理大型 hashMap 時。
如果這聽起來很熟悉,那么您可能遇到了穩(wěn)定復現的 HashMap 陷阱。
Google SwissTable 是 2017 年 CppCon 上被發(fā)表的一個高性能的 hashTable 。
從 Rust 1.36 開始,SwissTable 就是 Rust HashMap 的標準庫實現。
雖然它有不錯的性能,但 SwissTable 旨在以性能為代價抵御一類 HashDoS 攻擊。
如果您關心性能并且不關心安全問題,切換到類似 FxHasher 或者 ahash 可以顯著提高性能。
然而,這個建議的代價卻很少有人提及 —— 一些 O(n) hashTable 操作,包括反序列化,在一些 case 下它的時間復雜度有可能會升級到 O(n**2)。
下面博文會給大家?guī)頊y試 case 以及為什么會發(fā)生如此大的性能差距
https://morestina.net/blog/1843/the-stable-hashmap-trap
CnosDB 2.0 發(fā)布
特色功能:
專為時序數據設計的存儲引擎,優(yōu)化寫操作,支持刪除和更新操作;
壓縮算法由用戶靈活指定,壓縮比可調;
基于 Apache Arrow 及 DataFusion 實現了查詢引擎;
支持標準 SQL,支持 Schemaless 寫入;
多索引優(yōu)化了查詢效率;
生態(tài)友好,支持 RESTful 接口,支持 Telegraf、Grafana 等通用第三方生態(tài)組件。
快速上手指南:http://docs.cnosdb.com
GitHub倉庫: https://github.com/cnosdb/cnosdb
審核編輯:劉清
-
SQL
+關注
關注
1文章
775瀏覽量
44273 -
rust語言
+關注
關注
0文章
57瀏覽量
3031
原文標題:【Rust日報】2022-11-09 穩(wěn)定復現的 HashMap 陷阱
文章出處:【微信號:Rust語言中文社區(qū),微信公眾號:Rust語言中文社區(qū)】歡迎添加關注!文章轉載請注明出處。
發(fā)布評論請先 登錄
相關推薦
CMMB信號發(fā)生器性能測試原理
![CMMB信號<b class='flag-5'>發(fā)生</b>器<b class='flag-5'>性能</b><b class='flag-5'>測試</b>原理](https://file1.elecfans.com//web2/M00/A6/17/wKgZomUMO7CAVg6qAAAQqQsiyks957.jpg)
FX2重新枚舉會發(fā)生什么
使用FVR會發(fā)生什么?
搭建完Keil工程后進行編譯后發(fā)生如下的錯誤
在DevEco Studio IDEA中使用華為云iot應用側開發(fā)Java Demo時發(fā)生如下錯誤
有沒有人知道為什么調試模式會對RAM保留產生如此大的影響?
為什么在另一臺計算機上加載項目時“ioc”文件的內容會發(fā)生如此巨大的變化?
那些已經發(fā)生或會發(fā)生的移動醫(yī)療猜想
游戲本與輕薄本的性能測試,差距究竟有多大
SpinalHDL Simulation性能提升測試
![SpinalHDL Simulation<b class='flag-5'>性能</b>提升<b class='flag-5'>測試</b>](https://file1.elecfans.com/web2/M00/8F/88/wKgaomTPZCyAIWiWAAAOK72Ftbc258.jpg)
評論