none
diccionario -> containskey o containsvalue RRS feed

  • Pregunta

  • Hola!

    Intuyo que para saber si un elemento existe dentro de un diccionario, es más eficiente hacer un containskey  que un containsvalue.

    ¿Es así?

    Gracias.

    Un saludo.

    martes, 23 de febrero de 2016 16:21

Respuestas

Todas las respuestas

  • hola

    No es cuestion de eficiencia, sino de que necesitas validar existencia en el diccionario

    si quieres validar si la key o el value existe, no es lo mismo buscar si existe uno u otro

    Por lo general para evitar un error al ingresar una key duplicada se suelve validar esto por medio del containskey()

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    martes, 23 de febrero de 2016 16:32
  • al hilo de esto tengo que cargar en memoria los datos únicos de un campo de texto de una tabla de BD para luego hacer bùsquedas en dichos datos.

    No tengo claro cual sería el mejor repositorio para que las búsquedas sean lo más rápidas posible ya que serán del orden de varios miles de accesos al repositorio para tales búsquedas ¿Array? ¿List? ¿Queue? ¿Dictionary? ...

    por lo que he estado leyendo parece que el acceso más rápido en un Key de un Dictionary con su metodo containskey.

    ¿Alguna sugerencia o consejo?

    Gracias.

    martes, 23 de febrero de 2016 21:40
  • hola

    Cargar varios miles de datos en memoria tampoco creo que sea buena idea, mas que nada por el consumo de memoria en el servidor

    Podrias evaluar usar algun otro medio de acceso mas rapido como ser una base de datos NoSql, o quizas usar cache con Redis

    entonces los datos no estarian en memoria pero seria de acceso rapido para las busquedas

    >>por lo que he estado leyendo parece que el acceso más rápido en un Key de un Dictionary con su metodo containskey.

    si la key siempre es mas rapida, pero recuerda que son datos en memoria simpre va a ser mas rapido que una acceso a la db, ya sea que accedes por la key o por el valor

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    martes, 23 de febrero de 2016 21:45
  • La carga en memoria no me preocupa, los datos en sí no llegan a 50KB de peso.

    Lo que no tengo claro es que es más eficiente en este caso:

    si tardar más en llenar el diccionario desde el recordset y luego menos al hacer las 2.000 búsquedas

    o tardar menos en llenar una lista y luego más en hacer esas 2.000 búsquedas.

    :)

    miércoles, 24 de febrero de 2016 9:38
  • hola

    volcar datos a un diccionario va a tardar porque estas pasando de un medio fisico a memoria

    despues la busquedas sera rapidisimas, porque el acceso a memoria es instantaneo

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    miércoles, 24 de febrero de 2016 16:54