1. Problema
Usar la estructura de datos basada en clave/valor ConcurrentDictionary.
2. Solución
ConcurrentDictionary es una estructura de datos -tipo diccionario- con capacidad de control de acceso -thread-safe-. Para las operaciones de lectura no es necesario bloquear la estructura, sin embargo para escribir nuevos elementos sí (Agafonov, 2013).
Vale agregar que las operaciones Count, IsEmpty, Keys, Values, CopyTo y ToArray requieren bloquear el acceso total a la estructura para poder ser efectuadas. De aquí se recomienda no ser usadas frecuentamente, pues el desempeño se verá significativamente afectado (Aganofov).
3. Código C#
Prueba de ejecución:
Figura 1. Tiempo ejecución lectura y escritura de Dictionary y ConcurrentDictionary. |
En la Figura 1 se muestra que el desempeño de escritura de un objeto Dictionary es mucho mejor que un objeto ConcurrentDictionary. Los resultados son mejor en lectura por parte del ConcurrentDictionary, pero no llega a estar muy por encima de Dictionary.
Aunque la prueba anterior no es definitiva respecto al desempeño, sí que nos puede dar una perspectiva esencial para determinar cuál estructura de datos escoger para el tipo de problema que estamos resolviendo.
4. Literatura & Enlaces
Agafonov, E. Multithreading in C# 5.0 Cookbook. Copyright 2013 Eugene Agafonov, 978-1-84969-764-4.
O
No hay comentarios:
Publicar un comentario
Envíe sus comentarios, dudas, sugerencias, críticas. Gracias.