IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Caching performant de données


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de stephane.julien
    Inscrit en
    Septembre 2007
    Messages
    342
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Septembre 2007
    Messages : 342
    Par défaut Caching performant de données
    Bonjour,

    Je suis en train de développer une application qui nécessite un max de performance. J'ai pas mal de données à mettre en cache. Actuellement, je mets tous ça dans une HashTable, mais j'ai vu qu'il existe d'autres choses, comme EnterpriseLibrary - CacheManager.

    Est-ce que je peux avoir votre avis sur le caching de données? Quelles performances ont a avec des HashTable, qu'utilisez-vous, ...

    Merci de votre avis !

  2. #2
    Membre éclairé Avatar de stephane.julien
    Inscrit en
    Septembre 2007
    Messages
    342
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Septembre 2007
    Messages : 342
    Par défaut
    Et dans le cas de caching dans une HashTable, quelle type de clé faut-il utiliser pour optimiser les performances (int, string, ...) ? Est-ce que ça a de l'importance ?

  3. #3
    Rédacteur
    Avatar de dev01
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    2 451
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 451
    Par défaut
    Citation Envoyé par stephane.julien Voir le message
    Et dans le cas de caching dans une HashTable, quelle type de clé faut-il utiliser pour optimiser les performances (int, string, ...)
    Aucune importance ce qui est utilisé dans tout les cas c'est le HashCode.

    Par contre tu gagneras en performance si tu utilses un Dictionnary<K,V> plutot qu'un HashTable

    Sinon tes données sont des données complexe ou simple ? C'est sous forme de classe ou données brutes de Bd ?

  4. #4
    Membre éclairé Avatar de stephane.julien
    Inscrit en
    Septembre 2007
    Messages
    342
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Septembre 2007
    Messages : 342
    Par défaut
    Citation Envoyé par dev01 Voir le message
    Aucune importance ce qui est utilisé dans tout les cas c'est le HashCode.
    Oui mais je me dis que si j'utilise des strings comme clé, les HashCode seront beaucoup plus grand que si j'utilise du Int16 par exemple. Il n'y a vraiment rien a gagner?

    Citation Envoyé par dev01 Voir le message
    Par contre tu gagneras en performance si tu utilses un Dictionnary<K,V> plutot qu'un HashTable
    Je ne connaissais pas ce Dictionnary<K,V>. Est-ce que c'est fortement typé? Ce serait bien... Et je suis peut-être chiant, mais pourquoi c'est plus rapide? Est-ce que derrière, ça n'utilise pas une HashTable?

    Citation Envoyé par dev01 Voir le message
    Sinon tes données sont des données complexe ou simple ? C'est sous forme de classe ou données brutes de Bd ?
    Ce sont des instances de classe que j'ai développées. Au démarrage, je charge un nombre indéterminé de ces classes à partir de la base de données, et ce sont ces instances que je mets en cache.

    Merci pour la réponse !

  5. #5
    Rédacteur
    Avatar de dev01
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    2 451
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 451
    Par défaut
    Citation Envoyé par stephane.julien Voir le message
    Oui mais je me dis que si j'utilise des strings comme clé, les HashCode seront beaucoup plus grand que si j'utilise du Int16 par exemple. Il n'y a vraiment rien a gagner?
    Rien du tout le hashCode à une taille fixe ( enfin il me semble tu me met un doute la )

    Citation Envoyé par stephane.julien Voir le message
    Je ne connaissais pas ce Dictionnary<K,V>. Est-ce que c'est fortement typé?
    Oui c'est une hastable générique
    Citation Envoyé par stephane.julien Voir le message
    Et je suis peut-être chiant, mais pourquoi c'est plus rapide?
    Parce que tu évites les opérations de boxing/unboxing

    Citation Envoyé par stephane.julien Voir le message
    Est-ce que derrière, ça n'utilise pas une HashTable?
    Non absolument pas.

  6. #6
    Membre émérite Avatar de neptune
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    835
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2003
    Messages : 835
    Par défaut
    Les hashcodes ont tous la mêmes tailles (int), retournés par GetHashCode().

    Jette un oeil à l'EnterpriseLibrary de Microsoft (Patterns & practices), il y a un block qui gère le cache avec des possibilités de scavenging, etc.

    http://msdn.microsoft.com/en-us/library/cc309103.aspx

Discussions similaires

  1. [2008R2] Image cachée selon la donnée
    Par lucazzo dans le forum SSRS
    Réponses: 1
    Dernier message: 19/06/2013, 18h41
  2. Probleme de performance extraction données de BD Oracle vers Excel
    Par Balbo dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 28/05/2008, 14h53
  3. [HashTable] Création d'un système de cache : Perte de données
    Par Resyek dans le forum Collection et Stream
    Réponses: 4
    Dernier message: 20/11/2006, 19h29
  4. [cache système] priorité au cache = performances ?
    Par FFF dans le forum Windows XP
    Réponses: 5
    Dernier message: 04/01/2006, 21h46
  5. [Conception] Cache base de donnée Versus cache FTP ?
    Par genova dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 13/09/2005, 19h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo