成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Go1.24 新特性:map 換引擎,性能顯著提高!

開發 前端
本次 Go1.24 新版本又帶來了一個比較不錯的優化點,Go map 做了一個比較大的改變,有了一定的性能優化。咱們又可以躺著升級個版本就得到一定的性能益處了。今天這篇文章將主要針對這部分進行新版本特性分享。

大家好,我是煎魚。

本次 Go1.24 新版本又帶來了一個比較不錯的優化點,Go map 做了一個比較大的改變,有了一定的性能優化。

咱們又可以躺著升級個版本就得到一定的性能益處了。今天這篇文章將主要針對這部分進行新版本特性分享。

該提案(go/issues/54766[1])的發起方是來自字節的大佬們。主要目的建議在 Go map 使用 Swiss Table 來替換 Hashmap 的原始實現。

圖片圖片

這里不得不提到 Swiss Table 是什么?好像比 Hashmap 牛逼許多。

Swiss Table 是什么

Swiss Table[2] 是一種用于解決哈希沖突的高效哈希表實現,最初由 Google 的工程師開發,在 2017 年首次在技術大會中提出。并應用于其開源的 Abseil C++ 庫中。

圖片圖片

Swiss Table 的名字來源于其獨特的查找方式,該方式結合了緊湊的存儲和高效的查找性能,類似瑞士軍刀般功能強大且多用途。

以下簡單介紹 Swiss Table 的幾個核心概念。有想了解的同學可以淺嘗。不感興趣的可以跳過該章節。

緊湊的存儲布局

  • Swiss Table 使用小塊連續內存(稱為 bucket groups)存儲哈希表中的條目。每個 bucket group 通常包含 16 個條目。
  • 表的元數據(如哈希值的高位部分)存儲在一個緊湊的位圖結構中,這使得查找操作可以快速跳過空的或不匹配的條目。

高效的查找

  • 查找時,Swiss Table 通過元數據位圖快速定位可能的條目位置,避免遍歷所有條目。
  • 使用 SIMD(單指令多數據)技術,在現代 CPU 上一次性檢查多個桶,大大提高了查找性能。

緩存友好

  • 連續存儲布局和緊湊的元數據結構減少了緩存未命中率,提高了性能。
  • 查找和插入操作充分利用了 CPU 的緩存層次結構。

減少內存碎片

  • Swiss Table 在設計上盡量減少內存使用,同時保持高性能。
  • 它通過有效的內存管理策略減少了因沖突或增長導致的內存碎片。

漸進式增長

  • 在需要擴展哈希表時,Swiss Table 采用漸進式增長策略,避免了傳統哈希表一次性擴展帶來的性能波動。

對 Go map 的用處和效益

在字節大佬們提供的測試報告中,Go map 使用 Swiss Table 而不是 Hashmap 時,能夠帶來以下的性能效益:

  • 查詢:在查詢較大的 hashmap 或查詢 hashmap 中不存在的元素時,有顯著的提升(20%~50%)。在查詢元素較少的 hashmap 時,性能下降最多 20%。
  • 插入和刪除:在幾乎所有情況下都有顯著提升(20%~50%)。
  • 迭代(iterate):性能提升了大約 10%。
  • 內存情況:在大多數情況下,內存使用量減少了 0%~25%。重復使用固定大小的 hashmap 不再消耗任何額外的內存。

使用 Swiss Table 的改造是對于 Go map 有較大的綜合性能提升的。針對這一變更評估了 2 年多(2022 年發起)后,將在 2025 年 2 月發布的 Go1.24 正式被應用。

但由于該特性還處于實驗性,希望關閉的同學也可以設置 GOEXPERIMENT=noswissmap 來進行關閉。用于做簡單的對照數據實驗也是不錯的。

總結

本次國內的字節大佬們為 Go 運行時貢獻了 Go map 的 Swiss Table 的改造,給 map 帶來了較大的性能提高。

參考資料

[1]go/issues/54766: https://github.com/golang/go/issues/54766

[2]Swiss Table: https://abseil.io/about/design/swisstables

責任編輯:武曉燕 來源: 腦子進煎魚了
相關推薦

2025-02-12 08:50:22

2025-01-20 08:51:32

2025-05-07 08:55:14

GoMap存儲

2024-12-30 11:05:28

泛型Go類型別名

2024-12-23 08:44:49

2022-05-05 11:20:08

KubernetesDocker云計算

2025-02-07 09:18:05

機制Go函數

2024-09-03 08:49:01

2025-02-08 11:00:33

2025-03-07 09:12:28

2022-12-09 08:52:51

Go匿名接口

2025-05-26 10:10:00

Go開發testing

2013-05-15 09:37:00

GoGo1.1性能測試

2021-09-05 18:25:30

Go命令倉庫

2013-04-18 10:16:29

daMSC性能

2024-01-22 00:30:00

Go編程Go 1.22

2025-05-06 08:00:35

2012-08-15 09:41:28

虛擬化

2024-08-07 08:51:20

Go優化開發

2022-02-11 21:01:18

GoNetip網絡庫
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产成人网| 99re热精品视频国产免费 | 久久中文免费视频 | 永久免费在线观看 | 国产高清在线 | 美女二区 | 成人不卡 | 久久99精品久久久 | 国产一区二区三区免费 | 日韩黄 | 精品视频99| 中文字幕免费观看 | 国产亚洲精品a | 高清视频一区 | 国产高清在线精品 | 国产精品免费一区二区 | 国产一级在线观看 | 日韩高清三区 | 日日操日日干 | 91污在线| 国产成人精品一区二区三区在线 | 久久久xxx | 国产视频久久久久 | 91九色视频 | 国产精品国产三级国产aⅴ中文 | 国产小视频自拍 | 免费网站国产 | 久久久久久精 | 日本天堂一区 | 精品乱子伦一区二区三区 | 久久综合一区 | 国产精品精品久久久 | 91精品国产一区二区三区 | 免费黄色片在线观看 | 99热都是精品 | 日本在线网站 | 国产情品 | 国产欧美精品一区二区色综合朱莉 | 欧美日韩精品国产 | 99re在线视频| 在线观看亚洲欧美 |