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 :
- L'approche globale de la gestion de la mémoire
- Conception et convivialité de l'API
- Performance dans des scénarios du monde réel
- 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!