首頁  >  文章  >  後端開發  >  ShrinkMap - 具有自動記憶體管理功能的 Go 高效能並發映射

ShrinkMap - 具有自動記憶體管理功能的 Go 高效能並發映射

Barbara Streisand
Barbara Streisand原創
2024-11-03 21:05:03153瀏覽

ShrinkMap - A High-Performance Concurrent Map with Automatic Memory Management for Go

ShrinkMap - 具有自動記憶體管理功能的 Go 高效能並發映射

地鼠們大家好! ?

我很高興與大家分享 ShrinkMap,這是一種新的 Go 並發映射實現,專注於自動記憶體管理和效能。

https://github.com/jongyunha/shrinkmap/

什麼是收縮貼圖?

ShrinkMap 是一個執行緒安全的映射實現,它透過清理未使用的條目來自動管理內存,同時保持並發操作的高效能。當您需要更好的記憶體效率時,它被設計為sync.Map的直接替代品。

主要特點

  • 自動記憶體管理:自動刪除未使用的條目以防止記憶體洩漏
  • 線程安全:完全並發安全的操作,具有最小的鎖爭用
  • 高效能:針對讀取和寫入操作進行了最佳化
  • 型安:完全通用的實作(Go 1.18)
  • 簡單的API:類似sync.Map的熟悉介面

快速範例

package main

import (
    "fmt"
    "github.com/jongyunha/shrinkmap"
)

func main() {
    // Create a new map
    sm := shrinkmap.New[string, int]()

    // Store values
    sm.Store("counter", 1)

    // Load values
    if val, ok := sm.Load("counter"); ok {
        fmt.Printf("Value: %d\n", val)
    }
}

為什麼要收縮地圖?

雖然sync.Map非常適合許多用例,但在某些情況下記憶體管理變得至關重要:

  • 具有動態鍵值對的長時間運行的應用程式
  • 有記憶體限制的系統
  • 地圖條目中流失率較高的應用
  • 手動清理容易出錯或不切實際的情況

項目狀況

  • GitHub 儲存庫:https://github.com/jongyunha/shrinkmap
  • 許可證:麻省理工學院
  • Go 版本:1.18

尋找回饋

我很想聽聽您對以下方面的想法和回饋:

  1. 記憶體管理的整體方法
  2. API 設計與可用性
  3. 現實場景中的表現
  4. 您想看到的其他功能

貢獻

此專案開放供稿!無論是錯誤報告、功能請求或程式碼貢獻,都歡迎。

請隨意:

  • 如果您覺得有用,請為儲存庫加星標
  • 錯誤或功能請求的未解決問題
  • 提交 PR 進行改進
  • 分享您的用例和回饋

期待您的回饋和建議!

以上是ShrinkMap - 具有自動記憶體管理功能的 Go 高效能並發映射的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn