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

Java Discussion :

Garder dans la mémoire les calculs des fonctions


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Février 2011
    Messages
    90
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 90
    Par défaut Garder dans la mémoire les calculs des fonctions
    Bonjour,

    Je suis entrain de faire des calculs avec des fonctions en java et je voudrais que les calculs que je vais se conservent dans la mémoire pour que lorsque je voudrais relancer le calcul de la même fonction avec les mêmes paramètres, il ne refait pas les même calculs mais l'extrait simplement de la mémoire ca devient plus rapide et plus ergonomique Y'a-t-il un moyen pour faire ceci ?!
    Merci

  2. #2
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    il faut faire ce genre de mise en cache vous même, par exemple au début de la méthodes.

  3. #3
    Membre confirmé
    Inscrit en
    Février 2011
    Messages
    90
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 90
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    il faut faire ce genre de mise en cache vous même, par exemple au début de la méthodes.
    je vois pas très bien comment faire !! Pourrais tu m'éclaircir s'il te plait ..

  4. #4
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Ben tu stocke dans une cache quelconque (une Map par exemple) les résultats des différentes calculs déjà effectué et avant de faire un calcul tu vérifie si il y a pas déjà la réponse dans la Map.

  5. #5
    Membre confirmé
    Inscrit en
    Février 2011
    Messages
    90
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 90
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    Ben tu stocke dans une cache quelconque (une Map par exemple) les résultats des différentes calculs déjà effectué et avant de faire un calcul tu vérifie si il y a pas déjà la réponse dans la Map.
    à ce que j'ai bien compris, je déclare une variable bouléenne cacheOK et une variable cacheData et puis, je fais un code de genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    public List loadAll(Connection conn) throws SQLException, NotFoundException {
     
              // Check the cache status and use Cache if possible.
              if (cacheOk) {
                  return cacheData;
              }
     
              String sql = "SELECT * FROM Table";
              List searchResults = listQuery(conn, conn.prepareStatement(sql));
     
              // Update cache and mark it ready.
              cacheData = searchResults;
              cacheOk = true;
     
              return searchResults;
        }
    ca marche oui, mais seulement pour des requêtes statiques qui renvoient toujours le même résultat, par contre, les résultats obtenus sont variables en fonction des paramètres que j'intègre dans ma requête c'est pour ca que si j'utilise ce genre de cache, je me retrouverai en état de retourner le meme calcul pour différents paramètres, ce qui ne me correspond pas à mes besoins y'a-t-il un moyen pour le faire ?

  6. #6
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    tu met simplement l'ensemble de tes paramètre en clé de ta Map

  7. #7
    Modérateur

    Avatar de Robin56
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juin 2009
    Messages
    5 297
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juin 2009
    Messages : 5 297
    Par défaut
    Citation Envoyé par ROUGE87 Voir le message
    ca marche oui, mais seulement pour des requêtes statiques qui renvoient toujours le même résultat, par contre, les résultats obtenus sont variables en fonction des paramètres que j'intègre dans ma requête c'est pour ca que si j'utilise ce genre de cache, je me retrouverai en état de retourner le meme calcul pour différents paramètres, ce qui ne me correspond pas à mes besoins y'a-t-il un moyen pour le faire ?
    C'est totalement normal qu'il y ait ce genre de comportement.

    L'idée c'est de sauvegarder tes paramètres et le résultat dans une HashMap par exemple :
    1. Tu calcules le résultat Y pour le paramètre X
    2. Tu ajoutes une entrée dans ta HashMap : tonHashMap.put(X, Y);
    3. Lors de la prochaine exécution de ta fonction, tu dois calculer le résultat pour le paramètre X' :
    - Tu vérifies si tonHashMap.get(X') renvoie quelquechose
    - Elle ne renvoie rien, tu peux refaire le calcul et ajouter dans ta HashMap tonHashMap.put(X', Y')
    4. Lors d'une nouvelle exécution de ta fonction, tu dois calculer le résultat pour le paramètre X de nouveau :
    - tonHashMap.get(X) te renvoie alors Y, tu sais alors qu'il n'y a pas besoin de le re-calculer
    5. Etc, etc ...
    Responsable Java de Developpez.com (Twitter et Facebook)
    Besoin d'un article/tutoriel/cours sur Java, consulter la page cours
    N'hésitez pas à consulter la FAQ Java et à poser vos questions sur les forums d'entraide Java
    --------
    Architecte Solution
    LinkedIn : https://www.linkedin.com/in/nicolascaudard/

Discussions similaires

  1. [VBA-Excel]Avoir une boite de dialogue avec les arguments des fonctions ?
    Par EvaristeGaloisBis dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 29/05/2007, 09h37
  2. Mesurer le temps de calcul des fonctions
    Par dzada dans le forum Caml
    Réponses: 2
    Dernier message: 12/03/2007, 19h54
  3. pointeurs sur les arguments des fonctions?
    Par brunoP dans le forum C
    Réponses: 3
    Dernier message: 14/05/2006, 18h11
  4. Comment afficher dans une combobox les driver des imprimante
    Par lassad dans le forum Composants VCL
    Réponses: 3
    Dernier message: 18/10/2005, 08h56

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