Heim  >  Artikel  >  Backend-Entwicklung  >  ShrinkMap – Eine leistungsstarke gleichzeitige Karte mit automatischer Speicherverwaltung für Go

ShrinkMap – Eine leistungsstarke gleichzeitige Karte mit automatischer Speicherverwaltung für Go

Barbara Streisand
Barbara StreisandOriginal
2024-11-03 21:05:03151Durchsuche

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

ShrinkMap – Eine leistungsstarke gleichzeitige Karte mit automatischer Speicherverwaltung für Go

Hallo Gophers! ?

Ich freue mich, ShrinkMap vorzustellen, eine neue gleichzeitige Kartenimplementierung für Go, die sich auf automatische Speicherverwaltung und Leistung konzentriert.

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

Was ist ShrinkMap?

ShrinkMap ist eine Thread-sichere Map-Implementierung, die den Speicher automatisch verwaltet, indem sie ungenutzte Einträge bereinigt und gleichzeitig eine hohe Leistung für gleichzeitige Vorgänge aufrechterhält. Es ist als Ersatz für sync.Map konzipiert, wenn Sie eine bessere Speichereffizienz benötigen.

Hauptmerkmale

  • Automatische Speicherverwaltung: Entfernt automatisch nicht verwendete Einträge, um Speicherlecks zu verhindern
  • Thread-sicher: Vollständig gleichzeitig sichere Vorgänge mit minimalem Sperrenkonflikt
  • Hohe Leistung: Optimiert für Lese- und Schreibvorgänge
  • Typsicher: Vollständig generische Implementierung (Go 1.18)
  • Einfache API: Vertraute Schnittstelle ähnlich sync.Map

Kurzes Beispiel

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)
    }
}

Warum ShrinkMap?

Obwohl sync.Map für viele Anwendungsfälle großartig ist, gibt es Szenarien, in denen die Speicherverwaltung von entscheidender Bedeutung ist:

  • Lang laufende Anwendungen mit dynamischen Schlüssel-Wert-Paaren
  • Systeme mit Speicherbeschränkungen
  • Anwendungen mit hoher Abwanderung von Karteneinträgen
  • Fälle, in denen eine manuelle Bereinigung fehleranfällig oder unpraktisch ist

Projektstatus

  • GitHub-Repository: https://github.com/jongyunha/shrinkmap
  • Lizenz: MIT
  • Go-Version: 1.18

Auf der Suche nach Feedback

Ich würde gerne Ihre Gedanken und Ihr Feedback hören zu:

  1. Der Gesamtansatz zur Speicherverwaltung
  2. API-Design und Benutzerfreundlichkeit
  3. Leistung in realen Szenarien
  4. Zusätzliche Funktionen, die Sie gerne sehen würden

Mitwirken

Das Projekt ist offen für Beiträge! Ob Fehlerberichte, Funktionsanfragen oder Codebeiträge, alle sind willkommen.

Fühlen Sie sich frei:

  • Markieren Sie das Repository, wenn Sie es nützlich finden
  • Offene Probleme für Fehler oder Funktionswünsche
  • PRs für Verbesserungen einreichen
  • Teilen Sie Ihre Anwendungsfälle und Ihr Feedback

Wir freuen uns auf Ihr Feedback und Ihre Vorschläge!

Das obige ist der detaillierte Inhalt vonShrinkMap – Eine leistungsstarke gleichzeitige Karte mit automatischer Speicherverwaltung für Go. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn