J'ai une carte structurée comme carte [chaîne] [] chaîne. Maintenant, je dois trouver toutes les clés qui ont les valeurs requises dans la tranche de valeur. Je peux faire quelque chose comme ceci:go carte de recherche en utilisant des valeurs dans une carte
// allsvc is map[string][]string
var newsl []string
for k, v := range allsvc {
for _, val := range v {
if v == "type1" || v == "type2" {
newsl.append(k)
}
}
}
La carte allsvc a atleast un demi-million d'entrées à un moment donné, et la recherche est assez fréquent. Je reçois la carte allsvc comme sortie d'une bibliothèque tierce et ensuite je dois la rechercher en utilisant les valeurs de mon API et fournir une réponse. Compte tenu de la fréquence élevée de recherche qui n'utilise pas les clés mais avec des valeurs, la façon dont je l'ai fait rend mon temps de réponse api dans les secondes. Yat-il un moyen d'améliorer les performances (vitesse de recherche)?
Comment est souvent la carte mise à jour? Obtenez-vous la carte une fois et devez ensuite interroger plusieurs fois? Si c'est le cas, il peut être utile de réarranger la carte quand vous l'obtenez pour ensuite accélérer les requêtes. – eugenioy
Je doute que vos valeurs soient uniques? si c'est par hasard alors créez 'map [string] bool' en utilisant des valeurs (peut être vous pouvez avoir une carte par partie). BTW 'val' de deuxième' for' n'est pas utilisé dans votre extrait. – jeevatkm
@eugenioy pouvez-vous donner un aperçu de la «réorganisation de la carte»? – jeevatkm