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

Langage Java Discussion :

Boucles imbriquées et traitement long


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    121
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 121
    Par défaut Boucles imbriquées et traitement long
    Bonjour,

    J'ai fait un programme qui tente d'identifier des sous-ensembles de clients similaires au sein de gros fichiers clients dotés d'une structure bien spécifique.
    En gros, dans deux boucles imbriquées j'évalue le degré de similitude existant entre chaque clients du fichier puis j'écris les paires de clients suffisament similaires au sein d'une base MySQL.
    J'utilise beaucoup de choses gourmandes en mémoire, des Vectors, des permutations, des combinaisons etc... Ce qui donne une complexité énorme à mon algo. Pour info, le traitement complet pour un fichier de 85000 clients dure 2 jours.

    Les boucles imbriquées ressemblent à ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     for(int i = 0; i < vClients.size(); i++){
         for(int j = i + 1; j < c.vClients.size(); j++){
    // Si clients différents et comparaison non effectuée
                   EvaluerSimilitude(vClients.get(i);vClients.get(j));
    ....
    }}

    Lorsque je lance le traitement sur un petit fichier disons de 5000 clients, l'ordre des numéros des paires de clients écrites dans ma base est cohérent avec le parcours du fichier initial. J'ai en sortie quelque chose du style :
    client 1 / client 65
    client 78 / client 89
    client 4567 / client 234
    client 4567 /client 235 etc...

    Ce qui est bizarre c'est que sur les traitement longs, où plusieurs milliards de comparaison sont faite j'ai quelque chose comme ça en sortie :
    client 56787 / client 34
    client 102 / 3
    client 3456 / client 37890
    client 2/3 etc...

    Pourquoi les paires écrites ne le sont-elle pas dans l'ordre du parcours du fichiers? Est-ce dû à des optimisations faites par le compilateur?

    Merci!

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    548
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 548
    Par défaut
    Je dirais plutôt que c'est MySQL qui optimise la table. Comment tu lis les résultats ?

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    121
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 121
    Par défaut
    Avec Toad for mySQL.
    En fait j'affiche en parallèle chaque paire de clients similaires sur la sortie standard et l'ordre d'apparition est le même que dans la base...

    Merci de ta réponse

Discussions similaires

  1. Réponses: 5
    Dernier message: 22/01/2015, 14h16
  2. boucle imbriquée
    Par zhoom dans le forum C
    Réponses: 4
    Dernier message: 07/11/2005, 13h10
  3. [Débutant]Boucle imbriquée avec des bornes différentes
    Par Hayato dans le forum Algorithmes et structures de données
    Réponses: 2
    Dernier message: 29/08/2005, 16h23
  4. Boucles imbriquées
    Par Immobilis dans le forum ASP
    Réponses: 28
    Dernier message: 14/01/2005, 13h17
  5. [XSL]boucle imbriquée avec condition
    Par kor dans le forum XSL/XSLT/XPATH
    Réponses: 10
    Dernier message: 11/01/2005, 14h19

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