Question

Je l'ai lu sur les listes de saut ces derniers temps.

J'ai une application Web qui exécute des requêtes SQL assez complexes contre des jeux de données statiques.

Je veux mettre en place un système de mise en cache dans lequel je produis un hachage md5 de la requête SQL puis retourner un ensemble de données en cache pour la requête si elle existe dans la collection.

Quel algorithme serait mieux, Dictionnaire ou SkipList? Pourquoi?

http://msdn.microsoft. com / fr-fr / bibliothèque / ms379573% 28VS.80% 29.aspx # datastructures20_4_topic4

Était-ce utile?

La solution

Dictionary, sans aucun doute. Deux raisons:

  • Dictionary<TKey, TValue> utilise une table de hachage, ce qui rend la récupération O (1) (temps constant), par rapport à O (log n ) dans une liste de saut.

  • Dictionary<TKey, TValue> existe déjà et est bien testé et optimisé, alors qu'une classe de liste de saut n'existe pas à ma connaissance, de sorte que vous auriez à mettre en œuvre vos propres, ce qui demande beaucoup d'efforts pour obtenir ce droit et de le tester à fond .

La consommation de mémoire est de la même pour les deux (certainement la même complexité, à savoir O ( n )).

Autres conseils

La raison pour laquelle vous devez utiliser un SkipList<T> vs Dictionary<TKey,TValue> est qu'une liste de saut conserve ses éléments dans l'ordre. Si vous avez besoin régulièrement d'énumérer les éléments dans l'ordre, une liste de saut est bon car il peut énumérer dans O (n).

Si vous voulez être en mesure d'énumérer, mais pour fichais si l'énumération est O (nlogn), un SortedSet<T> (ou plus probablement un

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top