c# - segundo - pasos para usar diccionario
¿Cuándo debería usar un diccionario ordenado en lugar de un diccionario[duplicado]? (3)
Nuevamente, mi pregunta: ¿por qué es el demócrata Sorted mucho más lento que todos los demás?
Etienne ya dio la respuesta técnica antes, pero para agregar un comentario más ''sencillo'': supongo que la parte "ordenada" de SortedDictionary pone un poco de sobrecarga en las inserciones e incluso recupera elementos como parece en la respuesta de Etienne.
Sin embargo, en una aplicación real, un SortedDictionary probablemente puede proporcionar un rendimiento considerable o un aumento del ''rendimiento percibido'' si necesita un "diccionario ya clasificado" en algún momento en su aplicación.
Espero que ayude.
Esta pregunta ya tiene una respuesta aquí:
- SortedList <>, SortedDictionary <> and Dictionary <> 6 respuestas
Como escribí en algunas de mis últimas publicaciones, sigo siendo bastante nuevo en el mundo de c #, por lo que escribí un pequeño punto de referencia para comparar Dictionary, Hashtable, SortedList y SortedDictionary entre sí. La prueba se ejecuta con 8000 iteraciones y de 50 a 100000 elementos. Probé la adición de nuevos elementos, la búsqueda de elementos y repasando algunos elementos al azar. Los resultados fueron como esperaba que fueran, excepto el resultado de SortedDictionary, que fue muy confuso para mí ... Fue solo lento en todos los resultados. Así que me perdí algo sobre el concepto de un diccionario ordenado. Ya pregunté en Google, pero todo lo que descubrí fue que otros habían llegado al mismo resultado de prueba. Ligeramente diferente en función de su implementación de la prueba. Nuevamente, mi pregunta: ¿por qué es el demócrata Sorted mucho más lento que todos los demás?
Un SortedDictionary se implementa como un árbol de búsqueda binario. Por lo tanto, acceder a un elemento es O (lg (n)). Un diccionario es una tabla hash y tiene una complejidad de O (1) para el acceso.
Un SortedDictionary es bastante útil cuando necesita que los datos se ordenen (un Diccionario no tiene un orden definido). El diccionario es apropiado para la mayoría de los casos.
La respuesta es simplemente que usaría SortedDictionary
si necesita un diccionario ordenado.
Recuerde que aunque terminó como más lento en sus pruebas, todavía no es lento. Si necesita exactamente lo que hace SortedDictionary
, es la mejor solución. Hacer lo mismo usando un Dictionary
o una lista de SortedList
sería mucho más lento.