Maison > développement back-end > Golang > ShrinkMap - Une carte simultanée hautes performances avec gestion automatique de la mémoire pour Go

ShrinkMap - Une carte simultanée hautes performances avec gestion automatique de la mémoire pour Go

Barbara Streisand
Libérer: 2024-11-03 21:05:03
original
215 Les gens l'ont consulté

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

ShrinkMap - Une carte simultanée hautes performances avec gestion automatique de la mémoire pour Go

Bonjour les Gophers ! ?

Je suis ravi de partager ShrinkMap, une nouvelle implémentation de carte simultanée pour Go qui se concentre sur la gestion automatique de la mémoire et les performances.

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

Qu’est-ce que ShrinkMap ?

ShrinkMap est une implémentation de carte thread-safe qui gère automatiquement la mémoire en nettoyant les entrées inutilisées tout en maintenant des performances élevées pour les opérations simultanées. Il est conçu pour remplacer sync.Map lorsque vous avez besoin d'une meilleure efficacité de la mémoire.

Principales fonctionnalités

  • Gestion automatique de la mémoire : supprime automatiquement les entrées inutilisées pour éviter les fuites de mémoire
  • Thread-Safe : opérations entièrement sécurisées et simultanées avec un minimum de conflits de verrouillage
  • Hautes performances : optimisé pour les opérations de lecture et d'écriture
  • Type-Safe : Implémentation entièrement générique (Go 1.18)
  • API simple : interface familière similaire à sync.Map

Exemple rapide

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)
    }
}
Copier après la connexion

Pourquoi ShrinkMap ?

Bien que sync.Map soit idéal pour de nombreux cas d'utilisation, il existe des scénarios dans lesquels la gestion de la mémoire devient cruciale :

  • Applications de longue durée avec des paires clé-valeur dynamiques
  • Systèmes avec contraintes de mémoire
  • Applications avec un taux de désabonnement élevé dans les entrées de carte
  • Cas où le nettoyage manuel est sujet aux erreurs ou peu pratique

Statut du projet

  • Dépôt GitHub : https://github.com/jongyunha/shrinkmap
  • Licence : MIT
  • Version Go : 1.18

À la recherche de commentaires

J'aimerais connaître vos réflexions et vos commentaires sur :

  1. L'approche globale de la gestion de la mémoire
  2. Conception et convivialité de l'API
  3. Performance dans des scénarios du monde réel
  4. Fonctionnalités supplémentaires que vous aimeriez voir

Contribuer

Le projet est ouvert aux contributions ! Qu'il s'agisse de rapports de bogues, de demandes de fonctionnalités ou de contributions au code, tous sont les bienvenus.

N'hésitez pas à :

  • Startez le référentiel si vous le trouvez utile
  • Problèmes ouverts pour des bugs ou des demandes de fonctionnalités
  • Soumettre des PR pour des améliorations
  • Partagez vos cas d'utilisation et vos commentaires

Dans l'attente de vos commentaires et suggestions !

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:dev.to
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal